如何使用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 =&gt; i.ToString()).ToList(); 我在结果中得到排序数组,但想要以 [1,4,67,666] 这样的格式。想要以这种格式显示警报,但我以这种格式进入 1267666。所以我应该使用[webmethod] 端的字符串连接以获得这种格式的结果 请看我的更新:return String.Join("", sra.Select(i =&gt; i.ToString()));

以上是关于如何使用ajax jQuery将文本框的整数值发送到[WebMethod]的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQuery 控制文本框的范围

如何使用 Ajax 将图像发送到 PHP 文件?

在 mvc 上使用 ajax 发送文件和文本参数

使用ajax+Jquery实现搜索框的历史记录提示功能

如何使用 jQuery $.ajax 将请求参数数组发送到 servlet?

如何在 ios 中通过蓝牙接收简单的整数值