javascript - 将数组从客户端传递到服务端 C#

标签 javascript c# asp.net .net c#-4.0

我使用带有以下函数的 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));
            }
        }
     }

最佳答案

如果您的框架是 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 Url 更改为您的 PassArray 地址,这意味着 YourPage.aspx 应该更改为在其代码隐藏中具有 PassArray 的页面名称.

更多信息 Read This .

关于javascript - 将数组从客户端传递到服务端 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48165256/

相关文章:

javascript 正则表达式不工作 : atleast one 0-9, 一个 a-z,一个 A-Z,一个来自 $\-_。 +!*'()

c# - GridView LostFocus 和 GotFocus 事件

c# - 在 CheckBox 上设置 CheckState 不起作用

c# - 接口(interface)方法中与委托(delegate)的无效差异

c# - ASP.Net C# 变量不存储在网页上

javascript - AngularJS 将函数添加到作用域

javascript - 如何根据条件将 CSS 应用于表格单元格

c# - 如何在 aspx (c#) 中编写一个简单的服务器端脚本?

javascript - 当没有互联网连接时,错误回调不会触发

c# - 想要使用 CRUD 操作在 asp.net c# 中创建 GridView 。请给我插入、更新、删除查询