如何使用ajax jQuery将文本框的整数值发送到[WebMethod]
Posted
技术标签:
【中文标题】如何使用ajax jQuery将文本框的整数值发送到[WebMethod]【英文标题】:How to send integer value of textbox to [WebMethod] using ajax jQuery 【发布时间】:2017-06-20 14:44:15 【问题描述】:[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,它使用冒泡排序返回排序后的数组列表。当我选择选项 bsort 并将整数作为输入(例如 100,10,1)输入文本框时。所以我通过使用stringify( arr: text)
将该文本框值传递给ajax 调用。我想将这个文本值“100,10,1”传递给 WebMethod,但它没有发生。所以我试图用 ',' 分割它,并想返回数组格式列表,但它是整数类型,所以无法返回。
【问题讨论】:
data: JSON.stringify([1, 2, 3]),
您需要发布一个数组,因为您接受 List<>
和 JSON.stringify()
可能不需要在这里
我通过使用 stringify( arr: text) 将该文本框值传递给 ajax 调用我想将这个文本值“100,10,1”传递给 webmethod,但它没有发生。所以我试图拆分这个','并希望返回数组格式字符串。
data: JSON.stringify(text.split(',')),
感谢@Satpal,但在 webmthod 中我将类型更改为字符串,我无法返回
返回数组时出错,因为我使用类型为 int 并将数组传递为 int.so 如何以字符串格式返回数组任何想法
【参考方案1】:
您应该首先定义atxt
变量。它将保存文本框的值,代码将是这样的:
var atxt = $('TEXTBOX_SELECTOR').val();
之后使用这个变量通过 ajax 传递值。
【讨论】:
【参考方案2】:版本 1 WebMethod 的变化:
如果要返回数组,将返回类型改为object
拆分 text
然后将数组转换为 int 列表
如果要对 List 进行排序,只需使用 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 版 如果您将 WebMethod 参数类型更改为
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(',') )
【讨论】:
但是使用 split into webmethod 会给出 system.array 不包含 split split 的定义的错误 是因为您将 WebMethod 参数类型更改为 int[] 吗?如果它是一个字符串类型并且你的 ajax 数据仍然是JSON.stringify(arr: text)
,那么它正在工作。
如果要返回字符串列表而不是 int 列表,请使用 return sra.Select(i => i.ToString()).ToList();
。
我在结果中得到排序数组,但想要以 [1,4,67,666] 这样的格式。想要以这种格式显示警报,但我以这种格式进入 1267666。所以我应该使用[webmethod] 端的字符串连接以获得这种格式的结果
请看我的更新:return String.Join("", sra.Select(i => i.ToString()));
以上是关于如何使用ajax jQuery将文本框的整数值发送到[WebMethod]的主要内容,如果未能解决你的问题,请参考以下文章