在jQuery中使用字符串中的JSON

时间:2018-02-22 15:33:12

标签: javascript jquery json

http://localhost/project1/index.php

//AJAX region
$(function(){
	$.ajax({
		type : 'GET',
		url : 'https://jsonplaceholder.typicode.com/posts/1',
		success : function(data){
			console.log('success \n', data);
		},
		error : function(data){
			console.log('error', data);
		}
	});
});//AJAX region
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

可以轻松地从http://localhost/project1/json.php加载数据 安慰: enter image description here

数据是字符串,如果我使用$ .parseJSON(数据)或JSON.parse(数据)我得到以下错误... enter image description here enter image description here

我希望数据作为实时JSON对象,以便我可以访问每个属性和&amp;值。

2 个答案:

答案 0 :(得分:2)

观察1:不必要的parseJSON

无需致电parseJSON。 使用$.ajaxdataType属性直接以JSON格式加载数据:

$.ajax({
    type : 'GET',
    dataType: 'json', // here
    url : 'http://localhost/project1/region.php',
    success : function(data) {
        // data is already a JS object :)
        console.log('success \n', data);
    },
    error : function(data){
        console.log('error', data);
    }
});

观察2:错误的JSON

由于

,上面的代码仍然会抛出相同的错误
  

意外令牌,

它指的是对象及其子对象的所有最后一个元素后面的尾随逗号。删除该逗号,不会再出现错误。

例如:

"State1" : {
    "City 1",
    "City 2",
    "City 3",
}

"City 3"之后不应该有逗号。其他状态也是如此,整个"country2"对象也是如此。

还有另一个错误:您的States对象是数组,但您正在编写对象。将卷曲括号更改为"State1""State2"的方括号。

答案 1 :(得分:1)

您返回的json对象是无效的json,对于状态对象,您需要使它们成为数组。这样:

&#34;状态1&#34;:[&#34; City1&#34;&#34;城2&#34;&#34;请分享帮助&#34;]

当解析器解析此对象时,它期望每个城市的第二个值,例如&#34; City1&#34;:&#34; Second Value&#34; ...因为没有第二个值,它会破坏。