JavaScript:函数无法正常工作()

Ale*_*tov 7 javascript ajax jquery

可能解决方案

你好,其他程序员!

我写信给你是为了请求一些我最近遇到的问题的帮助.问题如下:

1)我有一个用jQuery实现的ajax请求.

2)在返回成功的响应之后,脚本应该重新加载具有相应更改的页面,如果存在任何验证错误,则在隐藏字段之后插入它们,用于存储非关键的杂项数据.如果存在任何验证错误,则不会保存更改,只会使用验证错误消息重新加载页面.验证本身由servlet处理.

3)我注意到一切正常,当在实际附加错误消息之前呈现任何类型的alert()时,但我不希望有这样的警报.

这是JavaScript代码:

$('#randomFormElement').submit(function() {
        $(this).ajaxSubmit({
            success: function (data, status) {
                randomFunctionToReloadThePage(arg1, arg2, arg3);
                var errors = $(data).find('.classNameOfTheErrors').xml();
                //alert(something);
                $(errors).insertAfter('#idOfTheHiddenField');
            },
            error: function (jqXHR, textStatus, thrownError) {
            //Error handling if the ajax response fails.
            }
         });
});
Run Code Online (Sandbox Code Playgroud)

所以,主要的问题是:什么是alert()处理它的工作?

==========================

在Chrome上,它无论如何都无法正常工作.

在FF上,它仅在存在某些alert()时才起作用.

提前致谢!

mor*_*ner 5

alert()函数阻止代码执行并延迟javascript代码的处理.这可以给ajax请求完成时间.

  • +1因为"添加警报使我的代码工作"几乎总是意味着您遇到了异步事件的时间问题.这就是为什么`alert()`作为调试工具很糟糕的主要原因.使用`console.log()`代替; 它不会干扰您的处理顺序. (6认同)

Ale*_*tov 2

感谢大家的回答,特别是 gvee 的回答,我设法让它工作。显然,randomFunctionToReloadThePage() 中确实发生了一些异步情况,我设法使用 .ajaxStop () 方法修复了它。

编辑:使用 ajaxStop() 时发现第二个错误。我发现可以正常工作的解决方案如下:

1)向randomFunctionToReloadThePage添加一个额外的参数

2) 在相应页面中使用该额外参数调用该函数。

  • 你应该+1每个提到 randomFunctionToReloadThePage() 可能是异步的并且你评论说它不是:) (2认同)