我正在做一个像这样的 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;
}
什么是 NewClient 函数正确的结果类型才能使 jQuery 正常工作?现在它在 FF 和 Chrome 中工作,但在 IE8 中失败(在 IE7 中工作)——即在 IE8 中我收到错误警报(编辑:错误是由于“调试器;”在 JS 调用中调用)。无论如何,推荐的方法是什么:
- 通过 jQuery 将表单传递给 ASP.NET MVC($().serialize() 似乎工作正常,这是推荐的方式吗?)
- 从服务器端返回成功或失败,如果失败,我可以向客户端显示某种消息。我如何告诉 jQuery 方法/调用是否失败?
谢谢。
编辑:
html 看起来像这样:
<form id="formid" action="/client/newclient">
... input fields ...
</form>
最佳答案
form.serialize() 是在 jQuery 中发布表单的正确方法。
就错误处理而言,您已经掌握了要点。仅当服务器返回失败 HTTP 代码时,jQuery 才会认为请求失败。如果您想确定“逻辑故障”,即您的应用程序以某种方式失败,并且希望返回一个 html/json 响应来指示出了什么问题(这将具有有效的 HTTP 代码),那么您需要向您的应用程序添加一个错误标志响应,并在“成功”处理程序中检查它。
我一直喜欢Ben Nadel's接近它。
我也 answered a similar question before有一个非常详细的代码示例。
在重构所有 jQuery 代码之前,我会使用 Fiddler 之类的工具查看 IE8 中发生的情况。
关于jquery - 使用 jQuery AJAX 发布到 ASP.NET MVC 1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423864/