繁体   English   中英

使用ajax在服务器端恢复json时出错

[英]Error reciving json at server side using ajax

我试图将带有ajax的json发送到php文件,因为我尝试了下面的代码

  1. 使用jquery

     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_handler.phpvar_dump($_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有dataType: "json"所以它期待json格式的响应,就像{key:value} or [{k:v}, {k:v}, ....]而你是不echo任何json结构,所以这是你的ajax失败的地方。

在我看来你必须这样写:

$json = file_get_contents('php://input');
echo json_encode($json);

您的请求似乎很好,但为什么要对您的JSON进行字符串化?

您可以发布有效负载数据:

data: dummyData

要调试和测试您的json帖子,您可以使用扩展名作为Postman或Advanced Rest Client。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM