我已经被困在这几天了...问题是这样的:我想通过jQuery Ajax Json从PHP文件中获取多个值。但是只要我添加dataType: 'json',
,那就是事情的结束。我正在使用给定的代码:
PHP - check.php
$oid=1;
$f=10;
echo json_encode(array("oid" => $oid, "cid" => $f));
PS:上面的代码在一个循环中,一次性回收了许多oid和cid!
我没有在脚本上方或下方包含该部分,因为它可能会损害我网站的安全性..:P但这简单来说就是脚本的作用。
这里是javascript:
jQuery - scripts.js
$.ajax({
type: "POST",
dataType: 'json',
url: "check.php",
data: {anu:"bhav"}
}).done(function( result ) {
if(result!='0'){
var res=result.oid[0];
alert(res);
}
});
答案 0 :(得分:2)
如果它在循环内部,则需要构建一个包含所有数组的数组。
for ($i=0; $i<count($array); $i++) {
$oid=1;
$f=10;
$results[] = array("oid" => $oid, "cid" => $f));
}
echo json_encode($results);
答案 1 :(得分:1)
在echo json_encode(array("oid" => $oid, "cid" => $f));
header('Content-type: application/json');
更改以下行
var res = result.oid[0];
如下所示,尝试:
var res = result.oid;
答案 2 :(得分:1)
您写道:
PS:上面的代码在一个循环中,一次性回收了许多oid和cid!
这一行信息几乎肯定是您问题的最终原因。
一个接一个地响应多个JSON块不会产生一个大块的有效JSON。
它会生成看起来像JSON但无效的字符串,如果您通过JSON解析器传递它,则不会生成任何数据。
您的PHP程序应该打印一个,只有一个JSON块,通过一次调用json_encode()
生成。
你可以通过将数据复制到循环内的数组中,而不是在那里回显它,然后在那个大数组上执行json_encode()调用,而不是单个数据块。
希望有助于解释事情。