【问题标题】:json data displays in console not in browser - javascriptjson数据显示在控制台而不是浏览器中 - javascript
【发布时间】:2013-02-01 16:20:38
【问题描述】:

我通过 jquery $.post() 请求从 php 代码中检索到一些 json 数据。格式为 json。但是调用回调函数时,我的浏览器没有处理数据

$.post(url_send, data_to_send, function(callback_data){
      var info = callback_data.info;
      console.log(callback_data.info);
      ...
});

callback_data = {"success":[{"id":some_number}],"info":"some_string"} 

为了调试,我注意到:如果我输入这段代码console.log(callback_data);,正确的 json 数据会显示在我的控制台中,但如果我让console.log(callback_data.info),控制台显示'undefined'。有人能解释一下吗?

编辑:在我的 php 中,我有 $reply = array('success' => $ids,'info' => $info); echo json_encode($reply);

【问题讨论】:

  • 您在浏览器中如何以及在何处显示数据?
  • 实际上,在回调中,我构造了一些以 some_string 作为内容的 div,最后将其附加到正文中
  • 嗯...如果 callback_data 真的如您所描述的那样,则没有控制台可以记录的“信息”对象,因此是“未定义”
  • 您确定您的回调数据有一个带有值的“信息”属性吗?
  • 抱歉我已经编辑了我的帖子!!

标签: javascript jquery json post


【解决方案1】:

callback_data 将是字符串格式,您必须使用 eval 将其转换为 json 才能将其用作对象。一旦您执行了 eval,您应该拥有类似这样的 callback_data.info

$.post(url_send, data_to_send, function(callback_data){
      callback_data = eval('(' + callback_data + ')');
      console.log(callback_data.info);
      ...
});

【讨论】:

  • 很好用,你怎么解释: echo json_encode($reply) doesn't return a json ?
  • eevn 虽然您正在尝试发送 json,但数据只会以字符串格式发送,而不是以 json 对象格式发送,而 json 对象格式应再次转换为 javascript 端的 json 对象格式
  • 我对 php 了解不多,但我认为你不能以特定的 json 格式发送任何对象。你现在的做法很好,在 json 的字符串表示中被发送然后使用 eval 将字符串表示形式转换回 json
【解决方案2】:

您的 php 页面返回的 json 可能不包含名为“info”的字段。所以,当你尝试callback_data.info 时,因为没有信息,所以它是未定义的。

【讨论】:

  • 没有,因为在我的 php 中有 $reply = array('success' => $ids,'information' => $information); echo json_encode($reply);
  • 是的。戴夫指出信息和信息不一样。
【解决方案3】:

字段为信息,应为:callback_data.information

【讨论】:

    猜你喜欢
    • 2018-06-08
    • 2019-10-22
    • 2016-06-23
    • 2018-01-31
    • 2020-12-17
    • 2017-07-08
    • 2019-08-29
    • 2020-09-12
    • 2020-04-20
    相关资源
    最近更新 更多