当前位置: 首页 > 知识库问答 >
问题:

通过 ajax 传递数组

邢浩邈
2023-03-14

当我点击按钮时: -迭代所有tr并将其所有输入的名称收集到数组(这已经完成了) - 我还从输入和触发名称的两个文本中获取数据 - 通过ajax将所有(一个数组和两个文本)发送到asp.net.cs(不起作用)

    var senders = [];
    $("#btn_input_kaydet").click(function () {

        var input = $("#dd_input").text();
        var trigger = $("#dd_input_trigger").text();


        $("#dynamic_input_field tr").each(function (i) {
            senders[i] = $(this).find('td input').attr('name'); 
        });



        $.ajax({
            type: "POST",
            url: "senaryo.aspx/addscnerio",
            data: { "arr": senders, "input": input, "trigger": trigger},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert("successful")
            },
            traditional : true
        });

    });



    [WebMethod]
    public static void addscnerio(List<String> values, string name, string trigger)
    {

    }

共有3个答案

宋康安
2023-03-14

假设您的表的id = < code > dynamic _ input _ field ,您可以执行以下操作

var senders= [];
var headers = [];
$('#dynamic_input_field th').each(function(index, item) {
    headers[index] = $(item).html();
});
$("#dynamic_input_field tr").has('td').each(function() {
    var arrayItem = {};
    $('td', $(this)).each(function(index, item) {
        arrayItem[headers[index]] = $(item).html();
    });
    senders.push(arrayItem);
});

然后在ajax中发送< code>senders

芮叶秋
2023-03-14

根据我的说法,你可以用两种方法

代码1

在您的*中。aspx文件或*。js文件添加以下代码。

var senders = [];
$("#btn_input_kaydet").click(function () {

    var input = $("#dd_input").text();
    var trigger = $("#dd_input_trigger").text();


    $("#dynamic_input_field tr").each(function (i) {
        senders.push($(this).find('td input').attr('name'));
    });

    $.ajax({
        type: "POST",
        url: "yourpage.aspx/method",
        data: '{array: ' + JSON.stringify(senders) + ', input: "' + input + '", trigger: "' + trigger + '" }',
        traditional: true,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            senders = []; // Reset this so on Next Click you don't get same data
            // TODO: Success Handler
        },
        error: function () {
            senders = []; // Reset this so on Next Click you don't get same data
            // TODO: Fail Handler
        }
    });

});

在您的服务器端代码文件上使用如下

[WebMethod]
public static void method(List<string> array, string input, string trigger)
{
    // TODO: Further Action
}

在这个Asp.Net中,自动将JSON反序列化为字符串列表。下面是对ASP.NET JSON序列化和反序列化的很好的解释。

代码2

当我不了解JSON序列化和反序列化时,我曾经这样做过ASP.NET

在您的*中。aspx文件或*。js文件添加以下代码。

var senders = "";
$("#btn_input_kaydet").click(function () {

    var input = $("#dd_input").text();
    var trigger = $("#dd_input_trigger").text();


    $("#dynamic_input_field tr").each(function (i) {
        senders += ","+$(this).find('td input').attr('name');
    });

    $.ajax({
        type: "POST",
        url: "yourpage.aspx/method",
        data: '{array: ' + senders + ', input: "' + input + '", trigger: "' + trigger + '" }',
        traditional: true,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            // TODO: Success Handler
        },
        error: function () {
            // TODO: Fail Handler
        }
    });
});

在您的服务器端代码文件上使用如下

[WebMethod]
public static void method(string strArray, string input, string trigger)
{
    string[] array = strArray.Trim(",").Split(',');
    // TODO: Further Action
}

通过这两种方式,你都可以实现你的目标。

华烈
2023-03-14

在这里,您将数据作为对象传递

data : { "arr": senders, "input": input, "trigger": trigger}

因此,您应该使用适当的类作为参数,以反映您传递的对象,如下所示

public class InputData
{
    public string name { get; set; }
    public string trigger { get; set; }
    public List<String> values { get; set; }
}

并使用class作为参数来更改webmethod语法

[WebMethod]
public static void addscnerio(InputData data)
 类似资料:
  • 问题内容: 我有一个链接: 触发ajax调用 但是在控制台中,我看到以下内容: 处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改 我凝视着……有什么明显的东西吗? 问题答案: 不会自动传递给AJAX回调函数。您可以使用参数告诉jQuery通过它:

  • 问题内容: 我想在PHP中操纵JavaScript数组。可以做这样的事情吗? 活动是一维数组,例如: 尝试此脚本时无法完成…如何解决? 问题答案: 而已!现在您可以在PHP中访问它:

  • 问题内容: 我想知道是否有可能使用jQuery AJAX函数将数组传递给php函数。我有以下作为我的JavaScript 当我尝试执行以下操作时 我在PHP中将其作为“数组”接收。如何正确发送对象,以便PHP函数可以使用它? 问题答案: 从第二个ajax中,您可以根据属性名称访问数据,例如: 是在php中以关联数组转换的js对象

  • 问题内容: 我正在使用PhantomJS page.evaluate()进行抓取。我的问题是我传递到Webkit页面的代码是沙盒化的,因此无法访问我的主要幻象脚本的变量。这使得很难使抓取代码通用。 如何将参数推入页面? 问题答案: 我遇到了确切的问题。可以使用一些技巧,因为它也可以接受字符串。 有几种方法可以执行此操作,但是我使用了一个称为的包装器,该包装器接受其他参数以传递给必须在Webkit端

  • 问题内容: 我试图将变量从我的javascript代码传递到服务器端PHP代码。我知道这必须通过ajax调用来完成,我相信我已经正确地完成了,但是访问变量是从我的ajax传递到我的php时遇到的麻烦,因为我是php的新手。到目前为止,这是我的代码: 我正在尝试将我的JavaScript变量“ userID”传递给php($ userID),但是在此过程中我出错了。谢谢您的帮助! 问题答案: 将这样

  • 问题内容: 我想通过AJAX传递列表。如何执行此操作并在运行时分配值。我正在做,但是它传递了空值。这是我的代码。 jQuery的: 控制器: 它发送 “ item value is null” 。请帮我。 问题答案: 假设包含属性和,则脚本需要