jquery - 使用 jQuery AJAX 发布到 ASP.NET MVC 1.0

标签 jquery asp.net-mvc ajax post

我正在做一个像这样的 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/

相关文章:

javascript - 为什么光滑的 slider 在循环的第二次迭代中刷新 slider 项的 css

javascript - js onclick事件不适用于td元素

PHP - 无法上传大于 25MB 的文件

c# - SQL 连接

javascript - IE9 X-Frame-选项拒绝上传

jquery - 防止未处理的 jQuery AJAX 错误

javascript - 如何触发多远程 jquery 自动完成 UI 的自动搜索选项

asp.net-mvc - 带有 Bootstrap 3 的 ASP.NET MVC 未正确呈现

php - 简单的 Ajax Jquery 脚本 - 如何获取表中每一行的信息?

javascript - 对 AJAX POST 数据的 URL 进行编码