我想通过使用JSONP的jQuery AJAX调用从Flickr获取一堆照片数据,但我不想马上使用这些数据。相反,我想保留它以备后用。在一个复杂的情况下,我想让用户对预取数据执行不同的查询。在更简单的情况下,我希望每次用户单击按钮时加载下一个n图像。无法存储使用jQuery获取的数据JSONP
现在,我测试略低于最基本的功能,它是由最好的答案适应了这个问题:JQuery - Storing ajax response into global variable
然而,检索到的JSON数据是没有得到存储在jsonData变量,因为它应该。我把警报语句调试,奇怪的是,getData()警报在回调函数中的警报之前被触发。这是为什么发生?
var dataStore = (function() {
var jsonData;
$.ajax({
type: "GET",
url: "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
dataType: "json",
data: {
tags: "dog",
tagmode: "any",
format: "json"
},
success: function(data) {
jsonData = data;
alert(jsonData);
}
});
return { getData : function()
{
if (jsonData) return jsonData;
else alert("no data!");
}};
})();
var stuff = dataStore.getData();
$.each(stuff.items, function(i,item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 3) return false;
});
最好在Stack Overflow的每个问题上询问** 1 **问题。在上面,你问了两个截然不同的问题:1)为什么你的代码不能像你期望的那样工作,并且单独地2)你应该这样做还是放入隐藏的图像。混淆问题会降低问题及其答案的质量,最好将其分解。 –
我明白了,谢谢你的提示。现在我应该把它分开吗? – stephjang
'@ stchangg':我可能会,是的。由于这里的其他答案解决了“为什么这个代码没有正确工作”的方面,所以我会在这里留下那部分内容并单独询问图像最佳实践问题。我可以复制与此相关的部分答案。 –