2010-09-28 89 views
1

我在我看来有这段代码。如何在弹出窗口中显示此成功消息

我的数据库添加消息后显示完美,但我的网格不显示更新的结果。如果我继续

return true;

当我点击提交按钮,我收到弹出窗口马上,然后加入到数据库?这显示了我在网格中更新的结果。

回答

1

如果在提交函数结束时返回true,则浏览器将转到表单的action属性中的url。我认为如果你在ajax调用中关注了表单数据,你应该总是返回false。您需要将更新的网格作为ajax成功方法的一部分。

你不能有ajax弹出窗口,仍然让表单提交正常的方式。

$(function() { 
      $('#form4').submit(function() { 
       ...  
       $.ajax({ 
       ... 
        success: function (result) { 
         ... 
         // update grid 
         grid_container = $("#grid").html(''); 
         $("<table>").appendTo(grid_container); 
         for (ii = 0; ii < result.grid.length; ++ii) { 
         tr = $("<tr>").appendTo(table); 
         for (jj=0; jj < result.grid[ii].length; ++ii) { 
          td = $("<td>").text(result.grid[ii][jj]).appendTo(tr); 
         } 
         } 

         // show success message 
         alert('Saved NewServiceTypeCategory Successfully. Thank you!'); 
        } 
       }); 
       return false; 
      }); 
     }); 

现在你所要做的就是让你的服务器端处理程序返回带有网格数据的XML。

+0

感谢MattSmith如何在最后显示成功消息? – kumar 2010-09-28 02:29:02

1

AJAX请求是异步的,因此它在回调完成前完成表单提交例程,这可能会解释您得到的结果。我认为可能会有一个异步设置,您可以关闭,以便首先完成操作/回调。

+0

感谢Brian,该怎么做?你能告诉我吗? – kumar 2010-09-28 02:27:16

+0

检查了这一点:第一个选项有一个异步属性,你设置为false。在这里阅读更多:http://api.jquery.com/jQuery.ajax/请注意,可能会有影响。您可能需要考虑重构您的代码以通过回调传递true/false ... – 2010-09-28 13:56:48

1

基于你的代码,据我所知,你没有办法加载新的数据。

当您正在加载新数据时,因为submit事件成功执行它的默认操作,该操作将提交给服务器并刷新页面。

另一方面,return false;阻止此操作(包括刷新页面),而是运行XHR。

你可以做的是:

返回新的数据作为 XHR的结果,并相应地对其进行分析。

+0

请您告诉我什么是XHR? – kumar 2010-09-28 02:28:09

+0

Xml HTTP请求= AJAX – sheeks06 2010-09-28 03:15:09