此代码(我的意思是ajaxStart / ajaxStop)仅在Google Chrome中不起作用。
$.ajax({ type: "GET",
url: '<?=base_url();?>' + url,
async: false,
success : function(html)
{
modal = html;
}
});
$(document).ready(function() {
$(document)
.ajaxStart(function () {
$('#spinner').show();
})
.ajaxStop(function () {
$('#spinner').hide();
});
});
如何在chrome中使用ajaxStart / ajaxStop?
更新:我没有错误。谷歌浏览器只是忽略ajaxStart / ajaxStop动作。 HTML和正文而不是文档也不起作用。
在后端我使用睡眠5秒钟来查看加载过程。
是的,我使用谷歌浏览器的最新版本。
@Murali,这很神奇。浏览器忽略show()。但是,如果我在alert()之后/之前写,一切都好。怎么会这样?答案 0 :(得分:1)
尝试离开document.ready
并使用ajaxComplete,即使您的请求有误,也会执行
<script type="text/javascript">
$(document).ajaxStart(function(event, xhr, settings) {
alert('started');
$('#spinner').show();
})
.ajaxComplete(function(event, xhr, settings) {
alert('completed');
$('#spinner').hide();
});
</script>
答案 1 :(得分:1)
你试试这个:
$(document).bind("ajaxSend", function(){
$("#spinner").show();
}).bind("ajaxComplete", function(){
$("#spinner").hide();
});
答案 2 :(得分:1)
ajaxComplete和ajaxSuccess之间的区别是:
ajaxSuccess:只有在请求成功时才会调用此事件(服务器没有错误,数据没有错误)。
ajaxComplete:无论请求是否成功,都会调用此事件。即使是同步请求,您也将始终收到完整的回调。每次Ajax请求完成时都会触发它。
另一个问题可能是你应该在$(document).ready(function() {
之外使用它
其他问题可能是您有未完成的Ajax请求。见documentation
我正在使用jQuery 1.11.1 在Chrome浏览器42.0.2311.90米和42.0.2311.135米,Firefox 37.0.2中进行了测试
$(document).on({
ajaxStart: function() {
$('#spinner').show();
},
ajaxSuccess: function() {
$('#spinner').hide();
}
});