我正在尝试将一些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中我得到一个数组的()空数组..
答案 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);
}
});
它与传递给关键帖子的对象的名称一致,我不确定它是否可以复制,但我没有选择相同的名称。