3

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

谢谢!

4

2 回答 2

1

你做错了,因为 .ajaxStart() 和 .ajaxStop() 仅适用于 $(document) 从 jQuery 1.8 开始。确保将 $.ajaxSetup 全局设置为 true。

$.ajaxSetup({global:true});
$('document').ready(function () {

//your ready functions

}).ajaxStart(function () {
    startSpinner();
}).ajaxStop(function () {
    stopSpinner();
});
于 2013-10-29T13:07:31.607 回答
0

基本上,调用 AJAX 的内联代码在 $(document).ready() 代码之前执行,这就是没有加载程序出现的原因。问题是为什么你有任何内联代码?我认为页面开头发生的任何代码都应该在 document.ready() 处理程序中,这也应该解决您描述的问题。

当您说“在页面加载时执行 ajax 调用”时,我假设此代码是内联的,而不是在 onload 处理程序中。但是,如果它在 onload 处理程序中,我仍然会质疑为什么它不在就绪处理程序中。

于 2012-08-02T21:20:34.043 回答