如何使用ajax jQuery将文本框的整数值发送到[WebMethod]

时间:2017-02-03 09:16:14

标签: javascript c# jquery ajax webmethod

[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,但它没有发生。所以我试图用','拆分它,并希望返回数组格式列表,但它是整数类型,因此无法返回。

2 个答案:

答案 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
如果您将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(',') })