【问题标题】:How to get items from javascript array to asp.net session如何从 javascript 数组中获取项目到 asp.net 会话
【发布时间】:2020-12-08 09:21:57
【问题描述】:

我有一个 javascript 列表,我需要将它们保存到 MSSQL DB。请提出任何解决方案?我想把它们带到 asp.net cs 文件中。

function myFunction() {
            var chks = document.querySelectorAll("#KitapTurs input[type='checkbox']");
            var sayi = chks.length;
            var userchoise = new Array();//this is my array
            for (var i = 0; i < sayi; i++) {
                if (chks[i].checked) {
                    userchoise.push(chks[i].id);
                }
            }
            for (var i = 0; i < userchoise.length; i++) {
                document.write(userchoise[i] + " / ");
            }
//this is javascript session
            sessionStorage.setItem("userchosed", userchoise);
        };

我想将我的数组保存到 asp.net 中的数据库

【问题讨论】:

  • 您可以使用fetch 将数据从Web 浏览器发送回服务器上的asp.net 页面。该页面可以将数据存储在数据库中。 developer.mozilla.org/en-US/docs/Web/API/Fetch_API
  • 感谢您的评论@Kokodoko。我正在寻找更简单的解决方案。

标签: javascript asp.net session


【解决方案1】:

您可以创建一个隐藏字段并设置您想要在服务器端获取的值

<input type="hidden" value="" id="DataHolder" name="DataHolder" />

然后你可以将值附加到带有任何分隔符的变量(这里是逗号)

var userChoiseData = "";
for (var i = 0; i < sayi; i++) {
    if (chks[i].checked) {
        //userchoise.push(chks[i].id);
        //Append values to userChoiseData variable
        userChoiseData = userChoiseData + chks[i].id + ",";
    }
}

循环迭代后,变量userChoiseData中将有逗号分隔值

将此设置为隐藏字段的值

document.getElementById("DataHolder").value = "userChoiseData;

回发页面并在服务器端(.cs)获取值:

Request.Form["DataHolder"]

【讨论】:

    【解决方案2】:

    嗯,我想如果你想将该数组发送到服务器端并处理它?

    它不是 100% 清除数据类型。但我会考虑只向相关页面添加一个网络方法。

    所以,你的代码是这样的:

    var userchoise = new Array();//this is my array
    
     for (var i = 0; i < sayi; i++) {
        if (chks[i].checked) {
           userchoise.push(chks[i].id);
        }
     }
    
        $.ajax({
            type: "POST",
            url: 'MyWebpageTest.aspx/PassArray',
            data: JSON.stringify({ "MyIdList" : userchoise }),
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            success: function () {
                alert('ok');
            }
        });
    

    网页中的服务器端Sub呢?

    这看起来不错:

    <WebMethod()>
    Public Shared Sub Pass1(MyIdList As Integer())
    
        For Each v As Integer In MyIdList
            Debug.Print(v)
        Next
        ' code here to write array of id's to database.
    
    End Sub
    

    以上假设 jQuery 用于 ajax 帖子。请记住,您不必重新设置页面帖子。也不打扰页面回帖。获取页面回帖(带有隐藏控件)的努力是一些设置。这意味着您不需要也不需要回帖。

    在上面,我将 sub 放在与网页相同的位置 - 但该网页类不会创建实例 - 所以我使用了“共享”(在 c# 中是静态的)。所以上面会变成这样:

    [WebMethod()]
    public static void Pass1(int[] MyIdList)
    {
    foreach (int v in MyIdList)
        Debug.Print(v);
    }
    

    所以我认为只是在没有一堆隐藏字段的情况下传递数组,甚至必须设置一个回帖?您可以发送数组。一个仅将数组发送到服务器的小型 Sub(void 函数)意味着此时您可以对数组执行您喜欢/想要的操作。您没有提及该数组是否只是“id”列表或具有某种类型的附加结构。我认为隐藏字段/文本框是可能的-但是您必须执行回发,并且无论哪种方式都需要更多步骤-ajax调用非常简单,并且类型不仅强大,而且json字符串参数与您匹配声明服务器端——所以我认为你用这种方法编写的 js 代码最少,并且不需要额外的客户端控件——除了 jQuery。

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 2017-01-28
      • 2010-09-20
      • 2023-03-07
      相关资源
      最近更新 更多