【问题标题】:Can't access a property in a json object returned无法访问返回的 json 对象中的属性
【发布时间】:2012-02-09 20:27:40
【问题描述】:

我收到来自 ajax 请求的响应并将 request.responseText 存储在名为 requestData 的变量中。 requestData 数据包含由 php 使用 json_encode() 传递的 json 对象。

查看我在下面制作的一些日志。

requestData : {"status":"ok","to":"","html":"<option value=\"Huberdeau\">Huberdeau<\/option><option value=\"Bo\u00eeleau\">Bo\u00eeleau<\/option><option value=\"Br\u00e9beuf\">Br\u00e9beuf<\/option><option value=\"Saint-R\u00e9mi-d'Amherst\">Saint-R\u00e9mi-d'Amherst<\/option><option value=\"Harrington\">Harrington<\/option>","message":"old"}

我的问题是我无法访问变量状态。以下调用均未正确获取值。

requestData[status] : undefined
requestData.status : undefined
requestData['status'] : undefined
requestData[0]['status'] : undefined

当我尝试通过 for log 转储我的变量时,它会将其视为字符串。

dump_var :
0:{
1:"
2:s
3:t
4:a
5:t
6:u
7:s
8:"
9::

【问题讨论】:

  • 我认为您没有正确分配 JSON 响应。显示您的 AJAX 请求。

标签: ajax json object properties encode


【解决方案1】:

在 jQuery 中

而不是 $.get

使用 $.getJSON

$.getJSON(url, function(data){
     alert(data.someField);
});

那你就不需要 eval 了!!

【讨论】:

    【解决方案2】:

    我在对另一个问题的评论中找到了诀窍。无论如何我都会在这里发布它,因为在original discussion 中很难注意到它。

    var requestData = request['responseText'];
    var jsonData = eval("( " + requestData + ")");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 2011-11-05
      相关资源
      最近更新 更多