只是获取一个简单的.json文件并进行解析,否则就不会。无论如何都失败了。我尝试了其他线程的解决方案,但均无效果。 console.log()显示一个对象,但是我不能使用它。我尝试以几种不同的方式更改json,但没有用。这是.json文件:
[ {
"name": "Alabama",
"abbreviation": "AL"
},
{
"name": "Alaska",
"abbreviation": "AK"
},
{
"name": "American Samoa",
"abbreviation": "AS"
},
{
"name": "Arizona",
"abbreviation": "AZ"
}]
在我看来还可以。所以我添加了此功能以使用它:
function fillStates(){
var obj = $.get('states.json');
console.log(obj);
var states = JSON.parse(obj);
//console.log(states);
}
最佳答案
我猜您是误解了jQuery $.get()
方法。它将返回一个Promise对象,而不是您想要的数据:
从jQuery 1.5开始,所有jQuery的Ajax方法都返回XMLHTTPRequest对象的超集。 $ .get()返回的此jQuery XHR对象或“ jqXHR”实现Promise接口,为其提供Promise的所有属性,方法和行为(有关更多信息,请参见Deferred对象)。 jqXHR.done()(用于成功),jqXHR.fail()(用于错误)和jqXHR.always()(用于完成,无论成功还是错误)方法采用函数参数,该参数在请求终止时被调用。有关此函数接收的参数的信息,请参见$ .ajax()文档的jqXHR Object部分。
这就是为什么要给[object Object]
函数提供JSON.parse()
的原因。
您必须使用成功回调:
function fillStates(){
var obj = $.get('states.json', function(data) {
// It will be executed in case of sucess
console.log(data);
});
}