来自PHP服务器的JSON数据响应为空
我很难弄明白这一点。似乎无论我尝试什么,PHP总是返回一个空数组。以下是我的主文件(index.php)的代码: 没有定义.ajax函数中的数据类型,因此无论server.php文件输出什么,它都应该是可读的。所有必要的库(json、jquery)也包含在我的文档中。我在Apache2.2和PHP5.3.1上运行它,但在我的Web服务器(它是数千个网站的主机)上也显示了同样的情况。请求标头中使用的内容类型为“application/x-www-form-urlencoded;字符集=UTF-8',因此应该可以正常工作 谢谢你抽出时间。 顺致敬意,来自PHP服务器的JSON数据响应为空,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我很难弄明白这一点。似乎无论我尝试什么,PHP总是返回一个空数组。以下是我的主文件(index.php)的代码: 没有定义.ajax函数中的数据类型,因此无论server.php文件输出什么,它都应该是可读的。所有必要的库(json、jquery)也包含在我的文档中。我在Apache2.2和PHP5.3.1上运行它,但在我的Web服务器(它是数千个网站的主机)上也显示了同样的情况。请求标头中使用的内容类型为“application/x-www-form-urlencoded;字符集=UTF-8'
soren使用firefox和Live Http头扩展。
有了它,您将能够准确地看到问题所在,
Php或Js代码。
我认为你发送数据的方式不对。要么发送一个字符串,如
testName=testValue
,要么将test
中的值直接分配给.ajax()
的data
参数,而不使用stringify
方法
因为,如果使用stringify
,实际发送的数据将是(我假设,我不确定):
'{“testName”:“testValue”}'
但这不是有效的参数字符串
它应该是正式的
'testName=testValue'
因此,直接使用test
将对象转换为适当的字符串:
function callServer() {
$.ajax({
type: "POST",
url: "ajax/server.php",
data: test,
success: function(data) {
updatePage(data);
},
//Upon error, output message containing a little info on what went wrong
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('An Ajax error occured\ntextStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown + '\nstatus = ' + XMLHttpRequest.status);
}
});
}
我不确定PHP脚本的输出是否为JSON格式 如果您使用的是较新版本的PHP(即现在的PHP),则可以访问json_encode和json_decode函数。而不是做:
print_r($_POST);
尝试:
如果您的PHP版本没有这些函数,您可以使用Zend框架中的Zend_Json类库,以便在输出PHP变量之前将其编码为Json
当它返回时,它将是一个JSON格式的字符串。在jQuery.ajax调用中设置数据类型应将其计算为JS对象。如果不是这样,您就必须对其调用Javascript eval函数,或者(最好)使用JSON.parse(data)。这样就可以得出以下结论:在meNope看来这似乎是正确的,它应该是这样的:从{“testName”:“testValue”}我认为testName=TestValueAgreement是错误的。。。你不需要严格化。只需将数据作为JSON发送即可。将该测试变量作为数据而不是testJSON。Firebug说我正确发送了JSON数据我的js中的test也像一个对象。我将您的代码更正为$\u POST而不是$\u POST。它只输出以下“[]”
Array
(
)
function callServer() {
$.ajax({
type: "POST",
url: "ajax/server.php",
data: test,
success: function(data) {
updatePage(data);
},
//Upon error, output message containing a little info on what went wrong
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('An Ajax error occured\ntextStatus = ' + textStatus + '\nerrorThrown = ' + errorThrown + '\nstatus = ' + XMLHttpRequest.status);
}
});
}
print_r($_POST);
print json_encode($_POST);