$ .get并保存全局变量

时间:2015-09-30 11:06:23

标签: javascript jquery anonymous-function

var a = 0;
var requestStr ="https://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&nojsoncallback=1&per_page=20&api_key=dc140afe3fd3a251c2fdf9dcd835be5c"; //flickr key.
$.get(requestStr, function(data){
    a = data;
});

console.log(a);

这打印出0,但我试图将data参数保存到全局变量a.

我尝试过自我调用函数并使用第二个函数来设置a = data,但它们无法正常工作。

老实说,不能解决这个问题。

2 个答案:

答案 0 :(得分:1)

你需要承诺:

$.get(requestStr, function(data){
    a = data;
}).always(function(){
    console.log(a);
});

因为$.get()方法是异步调用,所以响应需要时间来执行并执行js代码。

除此之外,您可能需要查看$.when()

答案 1 :(得分:0)

Ajax调用是异步的,这意味着在a = data;之后调用console.log(a);,因为从Web获取数据需要时间。

您需要在数据实际到达时处理数据:

var a = 0;
var requestStr ="https://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&nojsoncallback=1&per_page=20&api_key=dc140afe3fd3a251c2fdf9dcd835be5c"; //flickr key.
$.get(requestStr, function(data){
    a = data;
    console.log(a);
});