所以我有一个通过 Ajax POST 请求提交的表单。单击发送按钮后,表单将被移除,并在其位置放置一个处理图形。表单数据被发送到我的 PHP 脚本,经过验证,如果一切顺利,则返回感谢消息以替换处理图形。但是,如果存在验证错误,我会将整个表单的副本回显到原始表单所在的 div 中,以显示表单中的错误位置。这一切都很好,除非当表单的副本被回显时,表单的 JS 不起作用?发送按钮的 JS 或输入上的焦点/模糊功能都不是 JS。感谢您的任何帮助。
5 回答
您是否尝试隐藏表单并显示处理图形而不是删除表单?当您遇到错误时,隐藏图形并再次显示表单。
使用此解决方案,错误处理会稍微困难一些,但您的表单不会出现在项目中的 2 个位置!
当您从 DOM 中删除表单时,事件也会被取消。您可以拥有一个设置这些事件的函数,并在响应中出现错误时调用它。
当您将 HTML 混合 Javascript 插入某个节点(例如 div)时,它与第一次将其作为整个文档的一部分提供不同。当作为 innerHTML 或一些文本节点插入时,它不被视为脚本。
你有几个选择:
** 切换可见性并对错误响应进行编码(以 JSON 为例)
创建 2 个 div,一个保存表单,另一个保存正在处理的图像。
处理时将表单切换为无显示,并阻止图像。
当您处理完表单并且遇到错误时,以某种方式对其进行编码(例如 JSON)并将其发送回,并让页面上的现有脚本解释响应。
例如,您可以创建一些结构来保存每个表单元素名称以及与之关联的错误,因此如果您在每个可以显示错误的表单元素旁边创建一个空白跨度,则可以轻松地在表单中突出显示它们。
当答案从服务器到达时,您可以再次显示表单,并显示:无 PROCESSING div。
** 解释您的回复(使用 JAVASCRIPT)
这更困难,但也更优雅。我曾经需要这个(从 XHR 请求返回的 Javascript),而 Randy Webb 用一种聪明的方法帮助了我。
在这里解释太多了。阅读此线程以获得更详细的方法,并链接到 Randy 的脚本:
$.ajax({
url: 'mypage.html',
success: function(){
alert('success');
**<ADD YOUR CUSTOM CODE AFTER AJAX SUCCESS - JS CODE>**
},
error: function(){
alert('failure');
}
});
你也可以参考。 http://docs.jquery.com/Ajax_Events
$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ......
});