Javascript 使用ajax在服务器端接收json时出错
我正在尝试用ajax将json发送到php文件,我已经尝试了下面的代码Javascript 使用ajax在服务器端接收json时出错,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在尝试用ajax将json发送到php文件,我已经尝试了下面的代码 使用jquery var dummyData = {'bob': 'foo', 'paul': 'dog'}; var ajaxRequest = $.ajax({ url: "json_handler.php", type: "POST", contentType: "application/json; charset=utf-8", data: JSON.s
var dummyData = {'bob': 'foo', 'paul': 'dog'};
var ajaxRequest = $.ajax({
url: "json_handler.php",
type: "POST",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(dummyData ),
dataType: "json"
});
ajaxRequest.done(function (response, textStatus, jqXHR) {
console.log(response + textStatus + jqXHR);
alert('sd');
});
ajaxRequest.fail(function (e) {
console.log(e);
});
json\u handler.php上做var\u dump($\u REQUEST)
,ajax请求一直失败,在响应文本中什么也没有得到
当我试着
$json = file_get_contents('php://input');
var_dump($json);
我得到了json,但是ajax请求仍然失败
我也尝试过使用javascript,下面是我的代码
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = stateHandler;
httpRequest.open("POST", "json_handler.php", true);
httpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
httpRequest.send( JSON.stringify(dummyData ));
这是我的控制台日志
请看,因为您的ajax具有数据类型:“json”
,所以它希望得到json
格式的响应,就像{key:value}或[{k:v},{k:v},….]
一样,并且您没有回送任何json结构,所以这就是ajax失败的地方
在我看来,你必须这样写:
$json = file_get_contents('php://input');
echo json_encode($json);
您的请求似乎很好,但为什么要将JSON字符串化
您可以发布有效负载数据:
data: dummyData
要调试和测试json post,可以将扩展用作Postman或高级Rest客户端
我在请求中看到状态200。你到底想做什么?我也看到了200,但是为什么jquery的请求失败了,我没有从done方法得到警告,为什么我必须文件获取内容('php://input');
获取JSOND如果php文件为空,是否会出现错误?不,我没有收到任何错误您的php文件试图做什么?感谢它现在工作正常,但为什么我必须使用file\u get\u contents而不仅仅是$\u requests这是因为您更改了ajax代码contentType:“application/json;charset=utf-8”中的标题,
如果执行此操作,则必须使用file\u get\u contents
,因为php本机支持formurlencoded
查询字符串。你是说如果我不使用application/json代码>头,由于我是stringfy json,它应该可以工作如果您删除application/json
,那么您不必太麻烦,ajax只需要传递一个对象data:{k:v}
就足够了。我已经尝试了$.ajax({url:ajax.php),键入:“POST”,data:json.stringify(serData),})
现在我不是在服务器上获取数据,而是在通过文件获取数据时,获取其内容