【问题标题】:jquery getJSON error [duplicate]jquery getJSON错误[重复]
【发布时间】:2013-05-26 22:11:58
【问题描述】:

我在下面使用这个代码

$.getJSON('/list_pat', function(data){
  $.each(data, function(key, val) {
    console.log("val  "+ val);
  });
});

/list_pat 返回的位置

    "{'patients':[{'ailment': [{'ailment': 'alksjdnfkajcbkasjcbksd', 'updatedby': ''
 'datecreated': '2013-05-20 18:53:13', 'ailtag': '11', 'prescription': 'kjnckasjcnksjdnc',
 'dateupdated': '', 'images': [{'desc': 'ksjcnksajcnd', 'datecreated': '', 'addedby': '2013-
05-20 18:53:22', 'imgtag': '30'}], 'createdby': '', 'procedure': 'kjnaksjncksdjnc'}]]}

在尝试上述代码后,我在 chrome 浏览器的控制台上收到错误消息。

Uncaught TypeError: Cannot use 'in' operator to search for '143' in         "{'patients':[{'ailment': [{'ailment': 'alksjdnfkajcbkasjcbksd', 'updatedby': ''
     'datecreated': '2013-05-20 18:53:13', 'ailtag': '11', 'prescription': 'kjnckasjcnksjdnc',
     'dateupdated': '', 'images': [{'desc': 'ksjcnksajcnd', 'datecreated': '', 'addedby': '2013-
    05-20 18:53:22', 'imgtag': '30'}], 'createdby': '', 'procedure': 'kjnaksjncksdjnc'}]]}

143 是字符串的总长度。我是不是错过了什么。我只想解析 JSON 。

【问题讨论】:

  • 如果这真的是返回值,它是一个 JSON 编码的字符串,包含(有点类似于)JSON 数据。所以你需要再次解码。
  • JSON 文件不以双引号开头。我想这就是问题所在。
  • 我怀疑服务器已经对其对象进行了两次编码。但第一次看起来不像是有效的 JSON。

标签: jquery json getjson


【解决方案1】:

您尝试使用的 JSON 无效。

有效的 JSON 字符串由双引号 (") 封装,而您的 JSON 字符串由单引号 (') 封装。

【讨论】:

  • 你是对的,还要解析对象..
  • @DoryZidon $.getJSON 返回一个 JSON 对象,而不是字符串。
  • 你是对的我的错..
  • 问题在于,虽然$.getJSON 确实试图将一个对象(= JSON.parse 的结果)提供给$.each,但显然在这种情况下$.each 会遍历一个字符串(仍然失败) - 因为响应实际上被认为是一个 JSON 化的字符串。
  • @rakesh,真的,这是您选择的答案?这是不对的。不管你使用双引号还是单引号。正如 razzak 正确指出的那样,问题在于您的 JSON 缺少逗号和右大括号。不管你选择哪一个,他的都是正确的答案,而不是这个!
【解决方案2】:

你在 json 中有语法错误:

data = {'patients':[
            {'ailment': [
                {'ailment': 'alksjdnfkajcbkasjcbksd', 
                 'updatedby': '',  //missing ","
                 'datecreated': '2013-05-20 18:53:13', 
                 'ailtag': '11', 
                 'prescription': 'kjnckasjcnksjdnc', 
                 'dateupdated': '',
                 'images': [
                    {'desc': 'ksjcnksajcnd', 
                     'datecreated': '', 
                     'addedby': '2013-05-20 18:53:22', 
                     'imgtag': '30'}], 
                 'createdby': '', 
                 'procedure': 'kjnaksjncksdjnc'}]
             } //missing "\}"
        ]};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2023-03-09
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多