jQuery:将Ajax提取到变量?

时间:2011-01-05 17:10:10

标签: javascript jquery ajax json jsonp

我认为下面显示的代码可以作为一个魅力,但显然它没有。我不知道为什么它不工作 - URL被正确获取(用firebug检查)但它拒绝将结果保存到我的变量(globalVar)。

我该怎么办?

var globalVar;  

function fetchDataset(kategori){  

    $.getJSON(apiUrl + "?jsoncallback=?", function(json){
        globalVar = json;

        console.log(globalVar); // Returns Undefined!
    });


}

4 个答案:

答案 0 :(得分:0)

我猜firebug应该显示你回调的内容。我有一个类似的问题,并使用.parseJSON()解决了它;

http://api.jquery.com/jQuery.parseJSON/

也许有帮助。

回调是否整齐地格式化/“正确”json?

答案 1 :(得分:0)

您的变量不是全局变量。您在函数范围内定义了它。您的Ajax调用是异步运行的,这意味着您的函数将在返回ajax请求之前完成(可能)。尝试在函数外声明globalVar。即

var globalVar;    
function fetchDataset(kategori){

编辑另外,请检查statusText(传递给回调函数的第二个变量),以确保您的请求没有错误。

答案 2 :(得分:0)

您是在提出跨域请求吗?

如果是这样,请确保使用jsonp

  

JSONP   如果URL包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。有关更多详细信息,请参阅$ .ajax()中有关jsonp数据类型的讨论。

这里有一个jsonp的例子。 http://api.jquery.com/jQuery.getJSON/

答案 3 :(得分:0)

显然,没有任何效果,所以我最终制作了一个基于PHP的代理来隧道传输任何跨域请求。将URL更改为PHP代理后,它运行良好。

感谢大家的帮助。非常感谢!