jQuery:将ajax URL加载为变量?

时间:2010-12-12 20:59:45

标签: jquery ajax json firebug

过去我总是使用getJson函数中的回调函数来处理获取的数据,但是由于我想将获取的数据保存为变量,以防止再次获取它,我已经运行了一些奇怪的问题。尝试以下代码时,我开始在firebug中收到此错误; Permission denied for <http://localhost> to get property XMLHttpRequest.channel

在没有回调函数的情况下尝试执行此操作是否错误?

function fetch(){
    var returndata = $.getJSON( 'http://localhost/api/get/1' );

    formatDataset(returndata);
}

function formatDataset(data){
    var row = '';

    $.each(data, function(){
        row += this.name + '<br>';
    });

    $('#myDiv').html(row);
}

2 个答案:

答案 0 :(得分:1)

你的代码错误

var returndata = $.getJSON( 'http://localhost/api/get/1' );

ajax是异步调用,因此它将启动该进程并继续,您不能将其用作返回类型。

如果你想完成任务,可以在getfson的成功处理程序中编写代码

答案 1 :(得分:0)

是的,你问的回调问题是正确的。 $ .getJSON函数返回XMLHttpRequest而不是数据。所以尝试类似的事情:

var returndata;
function fetch(){
    if (!returndata) {
        $.getJSON( 'http://localhost/api/get/1', function(data) {
            returndata = data; 
            formatDataset(returndata);
        });
        return;
    }
    formatDataset(returndata);
 }