2017-02-03 12 views
2
[code page="c#"] 
[WebMethod] 
public static int bubblesort(int[] arr) 
{  
    //some code here 

    return arr; 
} 

Как отправить целое значение текстового поля в [WebMethod] с помощью Ajax Jquery

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 в текстовое поле. Поэтому я передаю это значение текстового поля в ajax-вызов, используя stringify({ arr: text}). Я хочу передать это текстовое значение, которое «100,10,1» в WebMethod, но этого не происходит. Поэтому я пытаюсь разделить это на «,» и хочу вернуть список формата массива, но он находится в целочисленном типе, поэтому он не может вернуться.

+2

'данные: JSON.stringify ([1, 2, 3]),' Вы должны опубликовать массив, так как вы принимаете в 'List <>' и 'JSON .stringify() 'может не потребоваться здесь – Satpal

+0

Передача этого значения текстового поля в ajax-вызов с помощью stringify ({arr: text}) Я хочу передать это текстовое значение, которое является« 100,10,1 », в web-метод, но это notwhile.so Я пытаюсь разбить это ',' и хочу вернуть строку формата массива. – ziel

+0

'data: JSON.stringify (text.split (',')),' – Satpal

ответ

1

Вы должны сначала определить переменную atxt. Он будет содержать значение текстового поля, код будет выглядеть примерно так:

var atxt = $('TEXTBOX_SELECTOR').val();

После этого используем эту переменную для передачи значения через AJAX.

0

Version 1
Изменения в вашем WebMethod:

  • Если вы хотите, чтобы вернуть массив, изменить тип возвращаемого значения object
  • Разделите text затем преобразовать массив в Список междунар
  • Если вы хотите отсортировать список, просто используйте 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; 
} 


Version 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(',') }) 
+0

, но используя split в webmethod, указав ошибку, что system.array не содержит определения для split split – ziel

+0

Это потому, что вы изменили свой тип параметра WebMethod на int []? Если это строковый тип, и ваши данные ajax все еще 'JSON.stringify ({arr: text})', он работает. – krlzlx

+0

Используйте 'return sra.Select (i => i.ToString()). ToList();' если вы хотите вернуть список строк вместо списка int. – krlzlx