[英]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.