AJAX没有正确发送数据

时间:2013-05-02 09:10:04

标签: php jquery html ajax

我正在尝试将一些POST的数据AJAX到PHP页面,但数据没有正确发送。我做错了什么?

这是我的代码:

HTML

<a id="some_id">LINK</a>

Ajax功能

mFunction(){    
    $("#some_id").click(function(){
        var thisId = $(this).attr('id');
        console.log(thisId);
        $.ajax({
        type : 'POST',
        url : 'magic.php',
        data: {"thisId" : thisId},
        dataType: "json",
        success:function(data){
        console.log(data);
       }
     });    
  });  
}

PHP

<?php$thatId = $_POST['thisId']; print_r($_POST); ?>

所以一切都应该按照我的理解,但有些事情是错误的。 在console.log(data)中我获取ID以便发送数据 但是在print_r中我得到一个数组的()空数组..

6 个答案:

答案 0 :(得分:4)

您有dataType: "json",所以您的ajax调用期待json响应,这就是为什么您没有看到任何响应。

使用json_encode();

echo json_encode($_POST);

答案 1 :(得分:1)

magic.php

echo json_encode($_POST);

答案 2 :(得分:1)

如果$_POST为空(这里似乎是这种情况),您应该查看配置文件,尤其是variables_order设置。

  

例如,如果variables_order设置为"SP",则PHP将创建超级全局$ _SERVER和$ _POST,但不创建$ _ENV,$ _GET和$ _COOKIE。设置为“”表示不会设置超级全局。

确保"P"是此设置的一部分,即

variables_order = "GPCS"

进行此更改后重新启动服务器。

答案 3 :(得分:0)

我认为这一行:

data: {"thisId" : thisId},

应该是

data: {thisId : thisId},

答案 4 :(得分:0)

magic.php

echo json_encode($_POST);

中将Html.HTML

 mFunction(){    
   $("#some_id").click(function(){
     var thisId = $(this).attr('id');
     console.log(thisId);
     $.ajax({
     type : 'POST',
     url : 'magic.php',
     data: {thisId: thisId},
     dataType: "json",
     success:function(data){
     console.log(data);
     }
    });    
  });  
}

答案 5 :(得分:0)

当您向服务器请求参数时必须是对象,

数据:

{thisId: "abc"}

不是:

{"thisId": "abc"}

为什么不在这种情况下为thisId var添加不同的名称?

var thisId = $(this).attr('id');

var tId = $(this).attr('id');

并使用它:

$.ajax({
     type : 'POST',
     url : 'magic.php',
     data: {thisId: tId},
     dataType: "json",
     success:function(data){
     console.log(data);
     }
    });

它与传递给关键帖子的对象的名称一致,我不确定它是否可以复制,但我没有选择相同的名称。