我正在做这样的 jQuery AJAX 帖子:
var form = $("#formid");
form.submit(function()
{
$.ajax(
{
type: "POST",
url: form.attr("action"), // points to NewClient
data: form.serialize(),
success: function(msg) { alert('ok ' + msg); },
error: function(req, status, err) { alert('err=' + err + ' status=' + status); }
});
return false;
});
在 ASP.MVC 方面,我有这样的东西:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult NewClient()
{
// just a test...
return null;
}
jQuery 的 NewClient 函数正确工作的正确结果类型是什么?现在它在 FF 和 Chrome 中工作,但在 IE8 中失败(在 IE7 中工作)——即在 IE8 中我收到错误警报(edit:错误是由于“调试器”引起的;在 JS 调用中调用)。无论如何,推荐的方法是什么:
- 通过 jQuery 将表单传递给 ASP.NET MVC($().serialize() 似乎工作正常,这是推荐的方式吗?)
- 从服务器端返回成功或失败,如果失败,我可以向客户端显示某种消息。我如何告诉 jQuery 方法/调用是否失败?
Thanks.
EDIT:
html 看起来像这样:
<form id="formid" action="/client/newclient">
... input fields ...
</form>
form.serialize() 是在 jQuery 中发布表单的正确方法。
在错误处理方面,您已经掌握了要点。仅当服务器返回失败 HTTP 代码时,jQuery 才会认为请求失败。如果您想确定“逻辑故障”,即您的应用程序以某种方式失败,并且希望返回一个 html/json 响应来指示出了什么问题(这将具有有效的 HTTP 代码),那么您需要向您的应用程序添加一个错误标志响应,并在“成功”处理程序中检查它。
我一直喜欢本·纳德尔的 http://www.bennadel.com/blog/1392-Handling-AJAX-Errors-With-jQuery.htm接近它。
我也曾之前回答过类似问题 https://stackoverflow.com/questions/1264419/jquery-ajax-responses-in-asp-net-mvc/1264449#1264449有一个非常详细的代码示例。
不过,在重构所有 jQuery 代码之前,我会使用 Fiddler 之类的工具来了解 IE8 中发生的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)