$.get 并保存全局变量

$.get and saving global variables

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,但它们不起作用。

老实说我想不通。

你需要有承诺:

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

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

除此之外,您可能还想看看 $.when()

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

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

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);
});