使用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

回到顶部