【发布时间】:2010-09-28 02:17:10
【问题描述】:
我有这段代码。
在我的数据库添加消息后完美显示,但我的网格没有显示更新的结果。如果我坚持
return true;
当我单击提交按钮时,我会立即弹出窗口然后添加到数据库中?这在网格中显示了我的更新结果。
【问题讨论】:
标签: javascript jquery asp.net-mvc
我有这段代码。
在我的数据库添加消息后完美显示,但我的网格没有显示更新的结果。如果我坚持
return true;
当我单击提交按钮时,我会立即弹出窗口然后添加到数据库中?这在网格中显示了我的更新结果。
【问题讨论】:
标签: javascript jquery asp.net-mvc
如果您在提交函数结束时返回 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;
});
});
现在您要做的就是让您的服务器端 post 处理程序返回带有网格数据的 XML。
【讨论】:
AJAX 请求是异步的,因此它会在回调完成之前完成表单提交例程,这可能解释了您得到的结果。我认为可能有一个异步设置可以关闭,以便操作/回调必须首先完成。
【讨论】:
根据您的代码,据我所知,您无法加载新数据。
return true; 加载新数据的原因是因为submit 事件成功执行了它的默认操作,即提交到服务器并刷新页面。
另一方面,return false; 阻止了此操作(包括刷新页面),而是只运行 XHR。
你可以做的是:
返回新数据作为 XHR 并进行相应的解析。
【讨论】: