2010-12-09 128 views
57

我很想念這裏的東西。我有這樣的jQuery JavaScript的:jQuery Ajax將數組發送到ASP.NET MVC控制器

$.ajax({ 
    type: "POST", 
    url: "/update-note-order", 
    dataType: "json", 
    data: { 
     orderedIds: orderedIds, 
     unixTimeMs: new Date().getTime() 
    } 
}); 

orderedIds是JavaScript數字陣列(例如var orderedIds = [1, 2])。

的處理Controller方法是:

[HttpPost] 
public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs) 
{ 
    ... 
} 

當我在UpdateNoteOrder()Debugger.Break()orderedIds是在監視窗口null。 (unixTimeMs,然而,有一個數值。)

我如何通過數字陣列通過$.ajax()這樣orderedIds是我控制器long[]

回答

123

只需設置traditional參數true

$.ajax({ 
    type: "POST", 
    url: "/update-note-order", 
    dataType: "json", 
    traditional: true, 
    data: { 
     orderedIds: orderedIds, 
     unixTimeMs: new Date().getTime() 
    } 
}); 

由於jquery 1.4這個參數的存在是因爲機制將對象序列化爲查詢參數已更改。

0

你需要把orderedId的成參數數組,或控制器將不會看到它

$.param({ orderedIds: orderedIds }); 

在你的代碼:

$.ajax({ 
    type: "POST", 
    url: "/update-note-order", 
    dataType: "json", 
    data: { 
     orderedIds: $.param({ orderedIds: orderedIds }), 
     unixTimeMs: new Date().getTime() 
    } 
}); 
+2

這不起作用。在UpdateNoteOrder中,orderedIds仍然爲空。 – AgileMeansDoAsLittleAsPossible 2010-12-09 19:19:04

+0

如果它不起作用,請先檢查您的代碼,這是直接從jquery文檔http://api.jquery.com/jQuery.param/中獲取的。您可能想在拒絕答案之前確定您的答案是正確的 – 2010-12-09 19:22:17

相關問題