我使用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 :(得分: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");
}
})
});
答案 1 :(得分:1)
您的代码在发送数据方面存在一些问题!执行此表达式arr["48","47","46"]
时,您的期望是什么?这将给你undefined
,这就是你要发送的东西!
有两种方法可以修复您的代码。您可以在请求正文中发送数组。为此,您需要从数组创建一个JSON字符串,并将其作为data
属性发送,同时将请求内容类型标头值明确指定为“application / json”。您可以使用JSON.stringify
方法获取js数组的JSON字符串。
此外,请确保您正在调用正确的操作方法。在您的问题中,您共享了array
操作方法代码,但在客户端脚本中,您尝试调用其他操作方法(`Checkboxes)!
这应该有用。
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");
}
});
另一种选择是发送带有Values
属性的javascript对象(其数组作为其值)作为$.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");
}
});