【问题标题】:Parse Array of JSON Objects using JavaScript使用 JavaScript 解析 JSON 对象数组
【发布时间】:2016-07-08 23:02:33
【问题描述】:

使用 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?请帮忙。

【问题讨论】:

  • 你源数据是json,为什么你把json编码成json?如果你设置Content-type:application/json 如果我没记错的话,在ajax 函数jQuery json 中设置类型。你可以在回调函数第一个参数中获取data.your_data
  • 抱歉,使用正确的 PHP print_r() 编辑了帖子
  • 另外,没有 jQuery。仅使用 JavaScript
  • 使用 JSON.parseJSON(result);
  • 听起来数据没有被传递,而是返回了一个空对象。您确定您传递的 URL 正确/有效吗?

标签: javascript php jsonp


【解决方案1】:

您希望通过普通方式运行您的数据

json_encode($data)

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

【讨论】:

    【解决方案2】:
    $.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);
    });
    

    【讨论】:

      【解决方案3】:

      本文中的 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() 的原因,所以我们不必每次都经历所有这些。

      【讨论】:

        猜你喜欢
        • 2014-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        相关资源
        最近更新 更多