2016-03-15 63 views
0

經過幾天的搜索這裏是我的問題(這個問題讓我非常生氣)爲什麼我的POST ajax調用作爲GET傳遞?

我通過ajax調用post方法來提交表單。 不幸的是,$(form).submit()不適合我的情況。這裏是jQuery代碼:

$.ajax({ 
    url: '/Controller/_MyJson', 
    type: 'POST', 
    method: "POST", 
    data: $('#form').serialize(), 
    success: function (data)    
    { 
     // I will add a redirection here later 
    } 

}); 

控制器動作:

[HttpPost] 
public JsonResult _MyJson (MyViewModel vm) 
{ 
//action here 
} 

路由配置: url: "{controller}/{action}/{id}"

的問題是,在Chrome控制檯我的電話作爲獲得通過,這讓我404錯誤。在控制器端存在_MyJson方法並聲明[HttpPost]

我的jQuery版本是2.1.4。我使用aspx WebForms和一個MVC模型。

我很感激任何幫助!

UPD: 在切換到Mozilla調試器後,我發現我的POST調用正在傳遞statut 301,並且有一個GET相同的名稱會導致404錯誤。 O_O

+0

你使用路由配置嗎?如果是這樣,請檢查您的路線以查看其映射到的內容。 – Zaki

+0

類型是方法的別名。你不需要兩個。但這不是解決你的問題的辦法。 –

+0

'type'參數沒用。從jQuery文檔:'如果您使用1.9.0之前版本的jQuery,則應該使用type。' –

回答

1

嘗試使用速記:

$.post("/Controller/_MyJson", $('#form').serialize(), function (data) { 
    // stuff with data 
}); 
+0

謝謝,特別是編輯我的問題,我是格式化的新手。 '$ .post'簡寫給出了相同的結果,一個404錯誤的GET。 您是否認爲我可以創建'$(form).submit',如果提交成功,那麼重定向到另一個頁面? – bugkiller

+0

@bugkiller看起來像你的帖子到你的POST請求,響應是重定向。你能保存日誌並查看網絡標籤上發生了什麼嗎? –

+0

你是對的! POSt正在傳遞301 Moved Permanently statut,並且有一個GET方法,同名404錯誤 – bugkiller

1

好像你被序列化整個窗體數據。 Controller HttpPost方法必須匹配這個對象,否則GET方法將拋出404錯誤。嘗試在控制器中創建自定義對象,並從ajax調用中發送相應的JSON數據。這將解決問題。

+0

謝謝!我的控制器的方法接收一個與表單模型匹配的ViewModel。例如,當我嘗試'$(form).submit'時,它可以正常工作。在成功的'$(form).submit'之後,我無法確定如何重定向到另一個頁面,這就是爲什麼我要做一個簡單的ajax調用 – bugkiller

相關問題