ajaxStart在页面加载时执行ajax调用时不工作

时间:2012-08-02 20:29:30

标签: javascript jquery ajax

我目前遇到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之前声明,所以这也不是问题。

谢谢!

2 个答案:

答案 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处理程序中。