使用JavaScript解析JSON对象数组

时间:2016-03-22 06:56:40

标签: javascript php jsonp

使用JavaScript解析JSON对象数组时遇到问题。我的PHP文件获取数据库信息,例如:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => holly
            [text] => Text 1
        )
    [1] => Array
        (
            [id] => 2
            [name] => Becky
            [text] => Text 2
        )
)

然后我通过json_encode运行它(得到这个:

"[\r\n   {\r\n      \"id\":\"1\",\r\n      \"name\":\"holly\",\r\n          
\"text\":\"Text 1\"\r\n   },\r\n   {\r\n      \"id\":\"2\",\r\n      
\"name\":\"Becky\",\r\n      \"tet\":\"Text 2\"\r\n   }\r\n]"

此数据通过JavaScript函数从此处调用:http://oscargodson.com/posts/unmasking-jsonp.html

JSONP( url, function(json){console.log(json)});

回调不会返回我可以解析的任何内容,如果我执行console.log(json),我只会得到[Object Object]。我从PHP获得结果,因为Chrome的Web开发人员中的Sources选项卡显示了php文件和jsonified文本。我无法弄清楚如何将其发送到JavaScript进行解析。

我已经读过很多重复的'问题和许多人说使用JSON.stringify(),但我没有得到任何结果。

我的PHP或我的错误是不是正确使用JavaScript?请帮忙。

3 个答案:

答案 0 :(得分:0)

本文中的JSONP()函数不能处理来自数据库的数据,但是如果相同的数据是硬编码的。怪异。

var result =  [
    {"id":"1","name":"holly","text":"Text 1"},    
    {"id":"2","name":"Becky","text":"Text 2"}
];

for (var i = 0; i < result.length; i++) {

}

怪异。不知道为什么这个函数没有像预期的那样返回,但我想这就是为什么jQuery有$ .getJSON()所以我们不必每次都经历这一切。

答案 1 :(得分:0)

您希望通过简单的

运行数据
json_encode($data)

但请注意传递给此调用的任何其他参数 - 因为在您发布的字符串中(JSON编码函数的结果) - 您已经漂亮打印。 这可能是您的JSONP调用此类资源失败的主要原因 - 数据是非常精确的 - 当它不应该是。

答案 2 :(得分:-1)

$.ajax(
{
    url: "callback/yourcallback.php", //at the end echo json_encode($array);
    dataType: "jsonp",
    data: { paramname: paramvalue},
    type: "POST"
})
.done(function( data )
{
    var response=$.parseJSON(data);
      console.log(response);
});