2017-02-24 109 views
0

这是我拥有的JSON字符串。我已删除从JSON开闭括号中,因为我需要使用jQuery中的JSON值选择框实际加载的数据:解析JSON抛出错误

{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 

,这里是我的JavaScript代码

$.post("items.cfm",{"term":request.term}) 
       .done(function(data){ 
        try{ 
         var obj = JSON.parse(data), 
         values = []; 
         $.each(data, function(i, obj) { 
          values.push({"label":obj[x].text, "value":obj[x].id, "price":obj[x].id.split('~')[3]}); 
         }) 
         response(values); 
        }catch(e){ 
         alert(e); 
        } 
       }) 
       .fail(function(e){ 
        alert(e); 
       }); 

每次运行时我都会收到错误

SyntaxError: Unexpected token , in JSON at position

+0

您是否检查过浏览器控制台以查看HTTP请求返回的实际JSON内容?它是否真的说,“...在位置”没有更多的信息? – Pointy

+0

除非将它们作为数组封装在方括号中,否则不能在JSON字符串中包含多个对象。在JSON字符串的两端添加'['和']'使其有效。 – Santi

+0

我在我的POST中说我删除了开始和结束括号,如果我不删除它们,那么我得到这个错误:'TypeError:不能使用'在'运算符搜索'4592'在' – Hane

回答

3

您有两个由逗号分隔的JSON对象。如果你的意思是这是一个数组,你需要使用数组括号括起来:

[ 
{ 
    "text": "Pediatric FA, CPR & AED (2015)", 
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19" 
}, { 
    "text": "FA, CPR & AED Manual (2015)", 
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73" 
} 
] 

作为一个侧面说明,如果你的服务器产生无效的JSON,你应该在多数民众赞成产生的代码很好看JSON。机会是,有代码试图手动生成这个字符串,这是一个不好的做法。服务器应该使用库将返回的值转换为JSON。

+0

我在我的POST我删除了开始和结束括号,如果我不删除它们,然后我得到这个错误:'TypeError:不能使用'在'运算符搜索'4592'在' – Hane

+0

@Hane:你得到的这个其他错误是另一个问题完全是[自己修复](http://stackoverflow.com/a/18502129/120955)。 – StriplingWarrior