只是获取一个简单的.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);
        });
}

10-05 20:27
查看更多