我目前遇到ajaxStart / Stop问题。 当我在输入框中输入4位数时,我将执行AJAX调用(更改此输入框并且如果数字= 4)并且加载程序显示正确。
如果用户已提交页面并再次访问此页面,则会预先填充数字,并在页面加载时执行ajax调用。这是有效的,但是加载器没有显示。
我在文档就绪时调用ajaxStart / Stop:
$('document').ready(function () {
$('#spin').ajaxStart(function () {
startSpinner();
});
$('#spin').ajaxStop(function () {
stopSpinner();
});
});
并且执行ajax调用的函数在文档准备就绪之外:
<script type="text/javascript">
function fillStreets(postalcode, textfield, selectfield, validationfield, init, copy) {
PERFORM AJAX CALL HERE
}
</script>
任何猜测?我已经尝试过使用$(document).ajaxStart等但它没有用。 startSpinner()和stopSpinner()在document.ready之前声明,所以这也不是问题。
谢谢!
答案 0 :(得分:1)
你做错了,因为.ajaxStart()和.ajaxStop()仅适用于jQuery 1.8的$(document)。确保你将$ .ajaxSetup global归为真。
$.ajaxSetup({global:true});
$('document').ready(function () {
//your ready functions
}).ajaxStart(function () {
startSpinner();
}).ajaxStop(function () {
stopSpinner();
});
答案 1 :(得分:0)
基本上,调用AJAX的内联代码正在$(document).ready()代码之前执行,这就是没有加载器出现的原因。问题是为什么你有任何内联代码?在页面开头发生的任何代码都应该在我认为的document.ready()处理程序中,这也应该解决你描述的问题。
当你说“ajax调用是在页面加载时执行”时,我假设这段代码是内联的,而不是在onload处理程序中。如果它在onload处理程序中,我仍然会质疑它为什么不在ready处理程序中。