【问题标题】:ajaxStart not working when performing ajax call on page load在页面加载时执行 ajax 调用时 ajaxStart 不起作用
【发布时间】:2012-08-02 20:29:30
【问题描述】:

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

谢谢!

【问题讨论】:

  • 尝试在window.load 事件而不是document.ready 中进行ajax 调用。在document.ready 中,图像尚未加载,浏览器仍在进行一些处理。不确定它是否能解决您的问题,但值得一试

标签: javascript jquery ajax


【解决方案1】:

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

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

//your ready functions

}).ajaxStart(function () {
    startSpinner();
}).ajaxStop(function () {
    stopSpinner();
});

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 该函数确实是在内联代码中声明的。但是函数本身在 $(document).ready 中被调用。这也会导致问题吗?
    • 嗨@dqhendricks,调用fillStreets函数的代码也在文档中准备好了:` if ($('#PERSONAL_DATA_POSTCODE').val().length == 4) { enableAddress() ; fillCities($('#PERSONAL_DATA_POSTCODE').val(), 'PERSONAL_DATA_CITY', 'PERSONAL_DATA_CITY_SELECT', 'true', ''); fillStreets($('#PERSONAL_DATA_POSTCODE').val(), 'PERSONAL_DATA_STREET', 'PERSONAL_DATA_STREET_SELECT', 'PERSONAL_DATA_POSTCODE_VALID', 'true', ''); }` 这对你来说更有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多