我使用带有以下功能的onclientclick按钮点击调用javascript函数。
function addValues() {
debugger;
var arrValue = [];
var hdnValue = document.getElementById("hdn").value;
var strValue = hdnValue.split(',');
for (var i = 0; i < strValue.length; i++) {
var ddlValue = document.getElementById(strValue[i]).value;
arrValue.push(ddlValue);
}
}
arrValue
数组将包含所有必需的值,如何将此数组值移动到服务器端以进行进一步处理。
更新1:
HTML:
function addValues() {
debugger;
var arrddlValue = [];
var hdnddlValue = document.getElementById("hdnDDL").value;
var strddlValue = hdnddlValue.split(',');
for (var i = 0; i < strddlValue.length; i++) {
var ddlValue = document.getElementById(strddlValue[i]).value;
arrddlValue.push(ddlValue);
}
}
$.ajax({
url: '',
data: { ddlArray: arrddlValue },
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
},
error: function (x, e) {
}
});
代码:
protected void btnSort_Click(object sender, EventArgs e)
{
try
{
if (Request["ddlArray[]"] != null)
{
string[] arrValues = Array.ConvertAll(Request["ddlArray[]"].ToString().Split(','), s => (s));
}
}
}
答案 0 :(得分:3)
如果您的框架是ASP.Net,您可以通过$.ajax
传递它,我传递的数组如下:
$.ajax({
url: '',
data: { AbArray: arrValue },
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data) {
},
error: function (x, e) {
}
});
并在后端获取它,如:
if (request["AbArray[]"] != null)
{
int[] arrValues = Array.ConvertAll(request["AbArray[]"].ToString().Split(','), s => int.Parse(s));
}
假设数组为int
。
以上示例使用Generic-Handler
。
如果你想使用webmethod
做类似的事情:
[WebMethod(EnableSession = true)]
public static void PassArray(List<int> arr)
{
}
和Ajax就像:
function addValues() {
debugger;
var arrddlValue = [];
var hdnddlValue = document.getElementById("hdnDDL").value;
var strddlValue = hdnddlValue.split(',');
for (var i = 0; i < strddlValue.length; i++) {
var ddlValue = document.getElementById(strddlValue[i]).value;
arrddlValue.push(ddlValue);
}
var jsonVal = JSON.stringify({ arr: arrValue });
$.ajax({
url: 'YourPage.aspx/PassArray',
data: jsonVal,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data) {
},
error: function (x, e) {
}
});
}
更改Ajax网址,因为您的PassArray
地址YourPage.aspx
应更改为其中包含PassArray
代码隐藏的网页名称。
了解详情 Read This 。
答案 1 :(得分:1)
如果您使用的是Asp.net WebForm应用程序,
方法1:您可以将数组值存储在隐藏的输入控件中,并在c#编码中检索保存的数据。
方法2:在服务器端c#代码中定义web方法,并将此javascript数组值作为ajax调用传递。
方法1的 方法2的答案 2 :(得分:0)
我会通过使用一个不太可能出现在我的值中的特殊字符(例如:§)来对数组进行“字符串化”,然后在jQuery.ajax()函数的帮助下,我将它发送到后端(ASP.NET MVC)动作方法:
$.ajax({
url : 'http://a-domain.com/MyController/MyAction',
type : 'POST'
data : 'data=' + myStringifiedArray;
});
我的后端会是这样的(在MyController类中):
[HttpPost]
public ActionResult MyAction(string data)
{
string[] arrValue = data.Split('§');
...
}
<强>更新强>
对于ASP.NET表单,ajax请求将是:
$.ajax({
url : 'http://a-domain.com/MyPage.aspx/MyMethod',
type : 'POST'
data : 'data=' + myStringifiedArray;
});
后端将是这样的:
[System.Web.Services.WebMethod]
public static void MyMethod(string data)
{
string[] arrValue = data.Split('§');
...
}
您可以在此处找到更准确的解释:https://www.aspsnippets.com/Articles/Call-ASPNet-Page-Method-using-jQuery-AJAX-Example.aspx