2017-12-18 98 views
1

我正在將數組從視圖傳遞到使用Ajax的控制器,但操作時數組顯示爲空。使用Ajax將數組從視圖傳遞到控制器,但是在操作時,數組顯示爲空

這是我的代碼:

查看

$("#btn").click(function() { 
      debugger 
      arry = []; 
       $.ajax({ 
       type: "Post", 
       url: "/Main/CheckBoxes", 
       data: { Values: arr["48","47","46"] }, 
       success: function() { 
        alert("array: " + arry.join(', ')); 
       }, 
       error: function() { 
        alert("error"); 
       } 
      }) 


     }); 

行動

public ActionResult array(string[] Values) 
     { 
      for (int id = 0; id < Values.Length; id++) 
      { 
       string newID = Values[id]; 
      } 

     return View(); 
    } 
+0

'數據:{值: 「48」, 「47」, 「46」]},'和'加上傳統:真實;' –

+1

和動作方法的名字是'array',你在呼喚來自客戶端腳本的其他內容!!! – Shyju

回答

1
jQuery.ajaxSettings.traditional = true; 

$("#btn").click(function() { 
      debugger 
      arry = []; 
       $.ajax({ 
       type: "Post", 
       url: "/Main/CheckBoxes", 
       data: { Values:["48","47","46"]},//just edit this line 
       success: function() { 
        alert("array: " + arry.join(', ')); 
       }, 
       error: function() { 
        alert("error"); 
       } 
      }) 


     }); 
+0

動態創建該數組使用jquery和數組創建成功,如果我這樣發送數組({值:arry.join(',')})arry有值,但是當我發送像這樣的數組({值:arry} )其顯示空陣列? –

+0

data:{Values:arry} –

1

您的代碼對於你是如何發送數據的一些問題!當你執行這個表達式時你期望什麼arr["48","47","46"] ?????這將給你undefined,這就是你想要發送!

有兩種方法可以修復您的代碼。您可以在請求正文中發送數組。爲此,您需要從數組中創建一個JSON字符串,並將其作爲data屬性發送,同時將請求內容類型標頭值顯式指定爲「application/json」。您可以使用JSON.stringify方法來獲取js數組的JSON字符串。

此外,請確保您正在調用正確的操作方法。在您的問題中,您分享了array操作方法代碼,但在您的客戶端腳本中,您嘗試調用不同的操作方法(「複選框」)!

這應該工作。

var arry = ["48", "47", "46"]; 
var url = "@Url.Action("array", "Main")"; // Update your real url here 
// If your script is inside the razor view, you can us Url.Action (c#) method 

$.ajax({ 
    type: "Post", 
    url: url , 
    data: JSON.stringify(arry), 
    contentType: "application/json", 
    success: function(r) { 
     alert("Success"); 
     console.log(r); 
    }, 
    error: function() { 
     alert("error"); 
    } 
}); 

另一種選擇是發送javascript對象與屬性Values(其具有數組作爲它的值)作爲$.ajax呼叫的數據屬性值。現在請求內容類型頭將爲application/x-www-form-urlencoded;,並且該數組將在請求中作爲FormData發送。

var arry = ["48", "47", "46"]; 

$.ajax({ 
    type: "Post", 
    url: "/Main/array", 
    data: { Values: arry }, 
    success: function(r) { 
     console.log(r); 
    }, 
    error: function() { 
     alert("error"); 
    } 
}); 
+0

動態創建該數組並使用jquery,並且數組已成功創建,如果我發送數組,如下所示({Values:arry.join(',')})arry具有值,但是當我發送數組像這樣({Values:arry})其顯示空數組? –

+0

我剛剛用MVC5應用程序,jquery 3.2.1測試瞭解決方案的第二部分,它對我很有幫助。你有沒有嘗試第一個解決方案? – Shyju

相關問題