2016-03-07 83 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变量,看它确实是空的?