2009-09-14 45 views
3

我做一个jQuery AJAX后是这样的:后使用jQuery AJAX到ASP.NET MVC 1.0

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
  • 从服务器端返回成功或失败,并且如果它失败,我可以向客户端显示某种消息。我如何告诉jQuery该方法/调用失败或不?

感谢。

编辑:

的HTML如下:

<form id="formid" action="/client/newclient"> 
    ... input fields ... 
</form> 

回答

4

form.serialize()是张贴在jQuery的一个形式的正确方法。

在错误处理方面,你已经掌握了它的要点。如果服务器返回失败的HTTP代码,jQuery将只会将请求视为失败。如果你想确定一个“逻辑失败”,即你的应用程序失败了,并且想要返回一个html/json响应,指出哪里出错了(哪一个会有一个有效的HTTP代码),那么你需要给你的错误标志添加一个错误标志响应,并在“成功”处理程序中检查它。

我总是喜欢Ben Nadel's的方法。

我也answered a similar question before有相当详细的代码示例。

之前虽然重组所有的jQuery代码,我想看看发生了什么事情在IE8与像小提琴手的工具。

+0

我正在看它,现在试图找出为什么它不能与IE8一起使用。 – pbz

+0

看来我得到了错误信息,因为我在JavaScript代码中有一个“调试器”;由于某种原因,它不喜欢那样。如果我把它拿出来,它工作正常。 – pbz

+0

我喜欢你的文章中的解决方案。谢谢! – pbz