[code page="c#"]
[WebMethod]
public static int bubblesort(int[] arr)
{
//some code here
return arr;
}
var text;
$(document).ready(function() {
$("#submit").on("click", function() {
text = $("#text1").val();
option = $('#dropdownfilter').val();
bsortedarr(text);
});
});
function bsortedarr(text) {
$.ajax({
type: "POST",
url: "default.aspx/bubblesort",
data: JSON.stringify({ arr: text }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
//code
},
error: function(response) {
//code
}
});
}
我创建了WebMethod,它使用bubblesort返回数组的排序列表。当我选择选项bsort并将整数作为输入(例如100,10,1)输入到文本框中。所以我使用stringify({ arr: text})
将该文本框值传递给ajax调用。我想将这个文本值“100,10,1”传递给WebMethod,但它没有发生。所以我试图用','拆分它,并希望返回数组格式列表,但它是整数类型,因此无法返回。
答案 0 :(得分:0)
您应该首先定义atxt
变量。它将保存文本框的值,代码将是这样的:
var atxt = $('TEXTBOX_SELECTOR').val();
之后使用此变量通过ajax传递值。
答案 1 :(得分:0)
版本1
WebMethod的变化:
object
text
,然后将数组转换为int Sort()
代替循环WebMethod已更新:
[WebMethod]
public static object bubblesort(string arr)
{
// Split then convert to List<int>
var sra = arr.Split(',').Select(int.Parse).ToList();
// Sort the List
sra.Sort();
return sra;
}
<小时/> 版本2
int[]
,只需对数组进行排序:
[WebMethod]
public static object bubblesort(int[] arr)
{
// ----------------------------------------
// --- Return a Lit of int
// ----------------------------------------
// var sra = arr.ToList();
// sra.Sort();
// return sra;
// ----------------------------------------
// --- Return a List of string
// ----------------------------------------
// return sra.Select(i => i.ToString()).ToList();
// ----------------------------------------
// --- Return a string containing all numbers sorted
var sra = arr.ToList();
sra.Sort();
return String.Join("", sra.Select(i => i.ToString()));
}
测试输入是否是以逗号分隔的数字列表:
text = $("#text1").val();
var pattern = new RegExp(/^[0-9]+(,[0-9]+)*$/);
var isNumbers = pattern.test(text.replace(/\s+/g, ''));
并拆分您的text
:
data: JSON.stringify({ arr: text.split(',') })