$(文档)。ajaxstart未启动
我有两个函数可以调用$.getJSON——一个查看存储在服务器上的JSON,另一个调用Flickr 我有这个:$(文档)。ajaxstart未启动,ajax,jquery,flickr,Ajax,Jquery,Flickr,我有两个函数可以调用$.getJSON——一个查看存储在服务器上的JSON,另一个调用Flickr 我有这个: $(document).ajaxStart(function(){ alert('requeststart'); //$('#loading').show(); }); 当使用某个给定路径调用$.getJSON时,它会工作,但当$.getJSON调用Flickr时,它不会发出警报。Flickr调用可以正常工作,所有内容都可以正常加载。。。但
$(document).ajaxStart(function(){
alert('requeststart');
//$('#loading').show();
});
当使用某个给定路径调用$.getJSON时,它会工作,但当$.getJSON调用Flickr时,它不会发出警报。Flickr调用可以正常工作,所有内容都可以正常加载。。。但它不会启动ajaxStart。(我正在使用ajaxStart和ajaxStop显示正在加载的gif)
有什么想法吗
以下是调用Flickr的函数:
$('#submit').on("click", function (evt) {
evt.preventDefault();
var tag = $('input').val();
if (tag == "") {
alert("please enter a tag");
}
else {
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",{tags: tag, tagmode: "any", format: "json" },
function(data) {
$.each(data.items, function(i,item){
var name = names[index];
$("#" + name).empty();
$('<img src="' + item.media.m.replace("_m.jpg", ".jpg") + '" />').appendTo("#" + name);
$('<a href="' + item.link + '"> ' + item.title + '</a>').appendTo("#" + name );
index ++;
if (i==5) {
index = 0;
}
});
});
}
});
$(“#提交”)。在(“单击”上,函数(evt){
evt.preventDefault();
var标记=$('input').val();
如果(标记==“”){
警报(“请输入标签”);
}
否则{
$.getJSON(“http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?“,{tags:tag,tagmode:“any”,格式:“json”},
功能(数据){
$.each(data.items,function(i,item){
变量名称=名称[索引];
$(“#”+name).empty();
$('')。附加到(“#”+名称);
$('')。附加到(“#”+名称);
索引++;
如果(i==5){
指数=0;
}
});
});
}
});
jQuery仅在内部使用XMLHttpRequest
对象时触发这些事件(和)
但是,如果使用回调参数(JSONP
)从不同的域请求数据,jQuery不会使用XMLHttpRequest
,而是通过插入
标记来完成
这就是为什么事件没有被触发。
作为一种解决方法,您可以在调用
$.getJSON
之前开始加载动画,并在函数(数据){..
块内停止加载动画。对于乘法请求,您也可以单独计算它们。我是这样做的:
var loader = 0;
function showloader(cnt){
loader = loader + cnt;
if(loader < 1) {
$('#loading').hide();
} else {
$('#loading').show();
}
}
A很好。
showloader(1);
$.getJSON(
[...]
}).done(function() {
showloader(-1);
[...]
});