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

可能的方案

你好,其他程序员!

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

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

2)在返回成功的响应之后,脚本应该重新加载具有相应更改的页面,如果存在任何validation错误,则在隐藏字段之后插入它们,用于存储非关键的杂项数据。 如果存在任何validation错误,则不会保存更改,只会使用validation错误消息重新加载页面。 validation本身由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. } }); }); 

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

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

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

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

提前致谢!

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

这不是一个答案,而是一个调试提示(无法在注释中进行正确的代码格式化)。

alert()之后添加这两个调用:

 console.log( "errors:", errors ); console.log( "hidden:", $('#idOfTheHiddenField')[0] ); 

将警报保留注释并运行它。 它在开发者控制台中显示了什么?

然后进行比较,取消注释警报,使其在这两个调用之前运行,并在Firefox中运行。 现在控制台里有什么?

感谢大家的回答,特别是gvee的答案,我设法让它发挥作用。 显然,在randomFunctionToReloadThePage()中确实存在异步,我设法使用.ajaxStop()方法修复它。

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

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

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

尝试添加:cache:false

 $('#randomFormElement').submit(function() { $(this).ajaxSubmit({ cache: false, 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. } }); 

});