如何以本地数组的形式访问远程JSON数据

时间:2009-08-21 17:32:07

标签: javascript jquery ajax json

我可以使用Jquery的$ .get函数从另一个URL访问JSON数据,但是如何在代码的其他地方使用该数据(作为数组)?

请考虑以下代码:

    <script type="text/javascript">
    $(function () {        

    $.get("/some/other/url/that/returns/json", function(data){
        var d = eval(data);
    });

    alert(d);
    </script>

这不起作用,但它显示了我想做的事情。在此先感谢您的帮助/提示。

3 个答案:

答案 0 :(得分:3)

这样做:

<script type="text/javascript">
var d;

$.get("/some/other/url/that/returns/json", function(json){
    d = json;
}, "json");
</script>

你将获得json响应,如果它已经是一个数组,你将不需要做任何其他事情。另外,请尽可能少地使用eval() 。 (根本不是很好)

小心d不会有任何值,直到有响应,所以你的代码应该处理它。最有可能的是,您将在$ .get(“...”, function(json){} ,“json”)中调用使用d的函数。

<script type="text/javascript">
var d;

useArray = function(d){
    //Operations that involve the response
}

$.get("/some/other/url/that/returns/json", function(json){
    d = json;
    // Operate over "d" once your server
    useArray(d); 
}, "json");
</script>

当然,由于您现在在一个单独的函数上执行了d以上的所有操作,您可以简单地执行此操作

<script type="text/javascript">
useArray = function(d){
    //Operations that involve the response
}
$.get("/some/other/url/that/returns/json", function(json){
    useArray(json);
}, "json");
</script>

如果您需要再次访问d,则应根据需要修改代码。这只是一个指南。

答案 1 :(得分:0)

使d成为全局变量。或者将其分配给任何使用它的需要。

答案 2 :(得分:0)

  

仅供参考,您可以在通话中添加'type'arg并避免使用eval:$ .get('url',function(data){...},'json')

或者您可以使用$ .getJSON('url',function(data){...});