微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

$(文件).ajaxstart没有开火

我有两个函数可以进行$.get JSON调用一个查看存储在服务器上的JSON,另一个调用Flickr.

我有这个:

$(document).ajaxStart(function(){ 
        alert('requeststart');
        //$('#loading').show(); 
    });

当使用某个给定路径调用$.getJSON时,它会起作用,但是当$.getJSON调用Flickr时它不会发出警报. Flickr调用工作,并且所有内容都按原样加载…但它不会触发ajaxStart. (我正在使用ajaxStart和ajaxStop来显示loading-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;
                }       
        });
      });
    }
});

解决方法

如果jQuery内部使用XMLHttpRequest对象,则jQuery仅触发这些事件( ajaxStartajaxStop).

但是,如果使用回调参数(JSONP)从不同的域请求数据,则jQuery不使用XMLHttpRequest,而是通过插入< script>来实现.标签.

这就是事件未被解雇的原因.

作为一种解决方法,您可以在$.getJSON调用之前启动加载动画,并在函数(数据){..块中停止它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐