2014-02-12 57 views
-2

我还没有找到型动物响应张贴关于这问题......语法错误:JSON.parse:我的JSON数据意外字符

我叫servcie谁返回一个JSON数据,代码工作的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" 
} 

我找不到我的错误,有什么想法?

NB:我设置dataType我Ajax调用 'JSON'

和我的回报标题是:

Accept application/json, text/javascript, */*; q=0.01 

以及确切的错误是:

SyntaxError: JSON.parse: unexpected character 
var _summoners = jQuery.parseJSON(data); 

的回报type object is a well well for ... ...

+4

难道是'数据'已经**一个对象(不是包含JSON的字符串)? –

+2

有了这些头文件,我猜测jQuery已经为你解析了数据,并且'data'是一个对象,而不是一个字符串。 – 2014-02-12 18:41:03

+1

'console.log(typeof data)'显示什么?除非它说'string',否则你不应该解析它。 – Barmar

回答

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

jQuery自动解析数据为你时,它可以推断数据类型,你没有另有说明(通过dataType option)。当data已经是一个JS对象时,调用JSON.parse就会失败(将数据字符串化为JSON.parse("[object Object]"))。尝试

var _summoners = data; 
+0

我试过JSON.Parse,和我有同样的问题... –

+0

只有数据我有这个错误:TypeError:_summoners不是一个对象 var keys = Object.keys(_summoners); –

+0

您能告诉我们整个阿贾克斯电话吗? 'console.log(data)'给了什么,'console.log(typeof data)'是什么? – Bergi

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

+0

你真的只是建议将数据串化来解析它吗? – Bergi

+0

@Bergi我不知道OP有什么形式的数据。我编辑它以包含更简单的选择。 – turnt

+0

对于哪些数据形式会有所影响? – Bergi

相关问题