2016-03-07 118 views
0

我正在使用XAMPP和PHPStorm v9,在本地運行一個執行AJAX回調的簡單應用程序。

我的AJAX請求的服務器處理程序顯示一個空的$ _POST數組,我不知道爲什麼。在我使用所有這些代碼並在不同的服務器上運行之前,爲了消除平臺問題,有沒有人知道爲什麼$ _POST數組是空的?有什麼建議麼?謝謝

XHR窗格顯示執行的帖子。 enter image description here

的JS

if (valid) { 

    var queryStr = 'fName=' + firstName.val() + '&lName=' + lastName.val() + '&email=' + email.val() + '&phone=' + phone.val(); 

    var f = firstName.val(); 
    var l = lastName.val(); 
    var e = email.val(); 
    var p = phone.val(); 

    $.ajax({ 
     type: "POST", 
     url: '/ACS567-Projects/addContact.php', 
     data: { 
      fName: f, 
      lName: l, 
      email: e, 
      phone: p 
     }, 
     dataType: 'html', 
     success: OnAddSuccess, 
     error: OnAddFailure, 
     timeout: 60000 
    }); 
} 

的PHP處理程序

<?php 

if(isset($_POST['fName'])) { 

    $firstName = $_POST['fName']; 
    $lastName = $_POST['lName']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $addressBook->addContact($firstName,$lastName,$email,$phone); 

    echo "<b>success</b>"; 
    exit(); 
} 

echo "<b>failure</b>"; 
exit(); 
+0

嘗試在'$ _POST'數組上設置'processData'爲'false'和/或做一個'var_dump'來查看你正在獲取的內容。您的數據可能在發送前轉換爲查詢字符串。 – Marvin

+0

你怎麼知道POST是空的?打開瀏覽器網絡工具並檢查網絡XHR您要發送的內容 – daremachine

+0

我在處理程序中記錄了$ _POST檢查,並且POST爲空:foreach($ _POST as $ key => $ value){ $ str。= $鍵。「=>」。$ val; } – Slinky

回答

0

數據不會自動轉成準備使用數組在PHP腳本。閱讀jQuery文檔:

它被轉換爲查詢字符串,如果還不是字符串。它附加到GET請求的url。請參閱processData選項以防止此自動處理。對象必須是鍵/值對。如果value是一個數組,則jQuery會根據傳統設置的值(如下所述)使用相同的鍵序列化多個值。

此外,如果您沒有舊的jQuery版本,則應該使用'method'而不是'type'。

在阿賈克斯功能更多信息在這裏找到:

http://api.jquery.com/jquery.ajax/

你檢查你的客戶機/瀏覽器,看看有什麼張貼和傾倒的$ _POST變量,看它確實是空的?