一个非常简单的JSON调用在控制台中产生一个JS错误:“Unexpected token u”

时间:2014-05-27 10:04:34

标签: javascript json xmlhttprequest

我尝试进行简单的JSON调用,但我无法访问JSON文件,控制台告诉我:"未捕获的SyntaxError:意外的令牌u"

这是我的JSON文件' universo.json':

{"menu": {
  "chiave": "valore",
  "key": "value",
  "oggetto": {
    "sottoggetto": [
      {"chiave": "valore", "chiave2": "valore2"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

这是我的JS文件:

$(document).ready(function(){

    var Richiesta = new XMLHttpRequest();
        Richiesta.open('GET','universo.json',true);
        Richiesta.responseType = 'JSON';
        Richiesta.onload = function() {
                    valore = JSON.parse(this['menu']);
                    console.log('yes');
                };
        Richiesta.send();

});

非常感谢任何帮助。谢谢你。

1 个答案:

答案 0 :(得分:2)

onload处理程序中,this是XMLHttpRequest实例,它没有menu属性。访问它将产生undefinedJSON.parse将对其进行字符串化,"undefined"无效JSON(以意外的u开头)。

由于您已将.responseType设置为JSON,因此您实际上不需要解析任何内容。只需访问该对象。

Richiesta.responseType = 'json'; // seems to require lowercase
Richiesta.onload = function() {
    var obj = this.response; 
    // or:  = Richiesta.response
    // or:  = JSON.parse(this.responseText); // for backwards-compatibility
    var valore = obj.menu;
    console.log('yes', valore);
};