在javascript中从URL获取JSON数据?

3

我正在尝试从形如http://www.xyz.com/abc.json的URL中提取数据。 我一直在尝试使用以下方式中的$.ajax方法来实现。

    var json = (function () {
        var json = null;
        $.ajax({
            'async': false,
            'global': false,
            'url': "http://www.xyz.com/abc.json.",
            'dataType': "json",
            'success': function (data) {
                json = data;
            }
        });
        return json;
    })();

然而,我不能让它运行起来。我需要循环检查检索到的数据并检查一些特定的条件。如果JSON数据有名称,那么可以轻松地使用$.getJSON实现这一点,但是该文件的形式为:

    [{
        "name": "abc",
        "ID": 46 
    }]

因此,我必须将其有效地转换并存储在Javascript对象变量中,然后才能使用它。您有任何建议,我可能做错了什么?

2个回答

1
看起来你想将那个 data 响应转换为一个 JSON 对象,方法是用 { } 包装它,然后将其传递给 JSON 解析器。
function (data) {
  json = JSON.parse("{\"arr\":"+data+"}").arr;
}

然后获取您的数据,将是:

json[0].name  //"abc"

我认为你提出了一个很好的观点,需要解析数据才能将其转换回JSon对象。然而服务器仍未给我所需的数据。我正在思考可能的原因。 - CodeMonkey

0

所以你的问题是如何将字符串转换为Json对象? 如果你使用Jquery,你可以这样做:

jQuery.parseJSON( jsonString );

所以你的返回值应该是:
return jQuery.parseJSON( json );

您可以在这里阅读文档。


我没有意识到 $.get 是异步的。我会撤回我的建议。 - cgajardo
该URL指向一个JSon文件,而不是字符串。我认为这种方法行不通。 - CodeMonkey
你能给我们一个ajax调用返回的数据示例吗?在成功函数内部使用console.log(data) - cgajardo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接