脚本在添加dataType时停止返回值:'json'

时间:2013-08-04 11:53:13

标签: php jquery ajax json

我已经被困在这几天了...问题是这样的:我想通过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);
    }
});

3 个答案:

答案 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()调用,而不是单个数据块。

希望有助于解释事情。