0

所以我有一个通过 Ajax POST 请求提交的表单。单击发送按钮后,表单将被移除,并在其位置放置一个处理图形。表单数据被发送到我的 PHP 脚本,经过验证,如果一切顺利,则返回感谢消息以替换处理图形。但是,如果存在验证错误,我会将整个表单的副本回显到原始表单所在的 div 中,以显示表单中的错误位置。这一切都很好,除非当表单的副本被回显时,表单的 JS 不起作用?发送按钮的 JS 或输入上的焦点/模糊功能都不是 JS。感谢您的任何帮助。

4

5 回答 5

2

您是否尝试隐藏表单并显示处理图形而不是删除表单?当您遇到错误时,隐藏图形并再次显示表单。
使用此解决方案,错误处理会稍微困难一些,但您的表单不会出现在项目中的 2 个位置!

于 2012-07-30T08:19:18.807 回答
2

当您从 DOM 中删除表单时,事件也会被取消。您可以拥有一个设置这些事件的函数,并在响应中出现错误时调用它。

于 2012-07-30T08:19:42.143 回答
0

当您将 HTML 混合 Javascript 插入某个节点(例如 div)时,它与第一次将其作为整个文档的一部分提供不同。当作为 innerHTML 或一些文本节点插入时,它不被视为脚本。

你有几个选择:

** 切换可见性并对错误响应进行编码(以 JSON 为例)

创建 2 个 div,一个保存表单,另一个保存正在处理的图像。

处理时将表单切换为无显示,并阻止图像。

当您处理完表单并且遇到错误时,以某种方式对其进行编码(例如 JSON)并将其发送回,并让页面上的现有脚本解释响应。

例如,您可以创建一些结构来保存每个表单元素名称以及与之关联的错误,因此如果您在每个可以显示错误的表单元素旁边创建一个空白跨度,则可以轻松地在表单中突出显示它们。

当答案从服务器到达时,您可以再次显示表单,并显示:无 PROCESSING div。

** 解释您的回复(使用 JAVASCRIPT)

这更困难,但也更优雅。我曾经需要这个(从 XHR 请求返回的 Javascript),而 Randy Webb 用一种聪明的方法帮助了我。

在这里解释太多了。阅读此线程以获得更详细的方法,并链接到 Randy 的脚本:

http://tinyurl.com/6pakdu

于 2012-07-30T10:58:53.470 回答
-2
$.ajax({
  url: 'mypage.html',
  success: function(){
    alert('success');
    **<ADD YOUR CUSTOM CODE AFTER AJAX SUCCESS - JS CODE>**
  },
  error: function(){ 
    alert('failure');
  }
});
于 2012-07-30T08:25:46.057 回答
-2

你也可以参考。 http://docs.jquery.com/Ajax_Events

 $.ajax({
   beforeSend: function(){
     // Handle the beforeSend event
   },
   complete: function(){
     // Handle the complete event
   }
   // ......
 });
于 2012-07-30T08:30:16.257 回答