SyntaxError:JSON.parse:我的json数据上的意外字符

时间:2014-02-12 18:37:56

标签: javascript json

我没有找到关于那个问题的不同帖子的回应......

我打电话给一个返回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);

返回类型对象是一个格式良好的字符串......

3 个答案:

答案 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]]);
    };
}