簡體   English   中英

通過ajax傳遞數組

[英]Pass an array via ajax

當我單擊按鈕時:-遍歷所有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)
    {

    }

在這里,您將數據作為對象傳遞

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)

假設表的ID = 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中發送senders

var subject= new Array();
subject[0] = ‘PHP’;
subject[1] = ‘ASP.net’;


$.ajax({
type: "POST",
url: "subject.aspx/GetSubject",
data: "{‘subject’:['PHP','ASP.net']}",

我解決了這個問題。為幫助其他人,我發布了工作代碼:

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/Save_Scenario",
        data: '{arr: ' + JSON.stringify(senders) + ', input: "' + input + '", trigger: "' + trigger + '" }',
        traditional: true,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            alert("basarili");
        },
        error: function () {
            alert("error");
        }
    });

});




    [WebMethod]
    public static void Save_Scenario(List<string> arr, string input, string trigger)
    {

    }

根據我的說法,您可以通過以下兩種方式進行操作。

代碼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自動反序列化為字符串LIST。 在這里,可以很好地解釋ASP.NET中的JSON序列化和反序列化

代碼2

當我不了解ASP.NET中的JSON序列化和反序列化時,我曾經使用這種方式

在您的* .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
}

通過兩種方式,您都可以實現自己的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM