使用Ajax将数组从视图传递到控制器,但是在操作时,数组显示为空
我正在将数组从视图传递到使用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();
}
回答:
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");
}
})
});
回答:
您的代码对于你是如何发送数据的一些问题!当你执行这个表达式时你期望什么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");
}
});
以上是 使用Ajax将数组从视图传递到控制器,但是在操作时,数组显示为空 的全部内容, 来源链接: utcz.com/qa/263165.html