我没有找到关于那个问题的不同帖子的回应......
我打电话给一个返回json数据的servcie,代码在localhot上正常工作但不能在线工作......
我的成功方法:
if (data !== null) {
var _summoners = jQuery.parseJSON(data);
var keys = Object.keys(_summoners);
for (var i = 0; i < keys.length; i++) {
console.log(keys[i]);
$("." + keys[i]).text(_summoners[keys[i]]);
};
}
并返回数据:
{
"45260330": "SharkMister",
"42215171": "Nietpopov",
"40247365": "emaki",
"49678659": "FakeThePump",
"42127891": "Nutty Trickster",
"45397483": "Enter Name Here1",
"26589510": "pedrocsi",
"23324155": "Abdi385",
"46217784": "ExpliciitA",
"37018042": "GabrikageBR"
}
我找不到我的错误,任何想法?
注意:我在我的ajax调用中将dataType
设置为'json'
我的返回标题是:
Accept application/json, text/javascript, */*; q=0.01
确切的错误是:
SyntaxError: JSON.parse: unexpected character
var _summoners = jQuery.parseJSON(data);
返回类型对象是一个格式良好的字符串......
答案 0 :(得分:1)
当jQuery可以推断出数据类型并且你没有另外说明时(通过dataType
option),jQuery会自动解析数据。当data
已经是JS对象时,在其上调用JSON.parse
将失败(将数据字符串化为JSON.parse("[object Object]")
)。尝试
var _summoners = data;
答案 1 :(得分:0)
这个小提琴可能会有所帮助:http://jsfiddle.net/uvp93/2/
您的数据可能是JSON对象形式,而不是字符串形式。 jQuery.parseJSON()
采用字符串形式JSON并将其转换为相应的JavaScript对象。
试试这个:
if (data !== null) {
var _summoners = $.parseJSON(JSON.stringify(data));
var keys = Object.keys(_summoners);
for (var i = 0; i < keys.length; i++) {
console.log(keys[i]);
$("." + keys[i]).text(_summoners[keys[i]]);
};
}
如果您的数据是对象形式,只需执行简单的任务:_summoners = data
答案 2 :(得分:0)
好的,所以我找到了EVAL的解决方案!我发布给有同样问题的人:
if (data !== null) {
var _summoners = eval("("+data+")"); // $.parseJSON(data);
var keys = Object.keys(_summoners);
for (var i = 0; i < keys.length; i++) {
console.log(keys[i]);
$("." + keys[i]).text(_summoners[keys[i]]);
};
}