2009-09-14 41 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