0

我使用以下 php 代码创建 JSON 数据:

if($res =  $db->query('Select row1 from table1')){
    while($row = $res->fetch_row()){
        $json[] = $row;
    }
}
sort ($json);
$json = json_encode($json);
echo $json;

结果是[["1"],["2"],["3"]]
当我尝试使用 jquery ajax 获取这些数据时

<div id="output">JSON will be put here</div>
<script language="javascript" type="text/javascript">
    $(function ()   {
    $.ajax({
                url: 'json.php',
                dataType: 'json',
                data: '', 
                error: function(request,error) {
                            alert(error);
                            },
                success: function(data) {
                    var json = data[0];
                    alert(json);
                    $('#output').html(json+", ");
                    }
                });
            });

它说:“解析错误”。
我搜索了很多(在 Stack Overflow),但我的 jQuery 版本似乎是正确的(1.7.2)并且重新格式化 JSON-outpu 并没有帮助(我删除了左括号并尝试了很多其他的东西)。
有任何想法吗?

4

4 回答 4

2

解析ajax结果中返回的数据,

var retData= JSON.parse(data);
于 2013-07-25T12:55:39.413 回答
0

验证响应标头的内容类型(您可以在任何现代浏览器的网络控制台中看到这一点)。它需要以 application/json 的形式返回。任何其他类型都可能导致您的 Javascript 失败。在您的 PHP 文件中回显 JSON 之前,请尝试添加:

header('Content-Type: application/json');

这将明确且正确地设置响应内容类型。请记住,这取决于您的返回字符串首先是有效的 JSON,这似乎是。

于 2014-06-15T21:17:53.660 回答
0

我认为您不需要将其推送到数组中。您的查询已经是一个数组。所以尝试只使用 json_encode() 并提醒数据你得到什么并尝试使用 data.somevariable 访问数据(至少这是我在 ajax 中访问我的 json 数据的方式)。

希望能帮助到你

于 2013-07-25T13:20:00.897 回答
0

你应该在使用它之前检查你是否得到一个对象:

if(typeof data != 'object')
    data = $.parseJSON(data);

有时它被解释为一个字符串,你必须先转换它

于 2013-07-25T13:01:52.630 回答