2015-10-08 2 views
3

Я пытаюсь отправить все записи gridview с помощью jquery ajax, но он не работает. Вот мой кодПередача массива в WebMethod с помощью jquery ajax не работает в asp.net

function Save() { 
      var TableData = new Array(); 

      $('[id*=GridView1] tr').each(function (row, tr) { 
       TableData[row] = { 
        "Sr" : $(tr).find('td:eq(0)').text() 
        , "RollNo": $(tr).find('.RollNo').val() 
        , "Name" : $(tr).find('.Name').val() 
        , "Marks" : $(tr).find('.Marks').val() 
       } 
      }); 
         TableData.shift(); 
      $.ajax({ 
       type: "POST", 
       url: "TestPage.aspx/SaveData", 
       data: "{Data:'" + JSON.stringify(TableData) + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        alert(msg.d); 
       } 
      }); 
      return false; 
     } 

и код За

[WebMethod]  
    public static string SaveData(List<string> Data) 
    {  
     //My Code 
     return "Success"; 
    } 

Помоги мне, ребята ....

+0

попал ли контроль за 'webmethod' ?? Вы отлаживали? –

+0

В чем проблема? как я вижу, у вас есть 'dataType:" json ",' и вы не возвращаете ответ json. поэтому я могу предложить вам удалить его или изменить его на 'dataType:" text ",' – Jai

+0

Я отлаживаю код. это не вызов веб-метода. –

ответ

3

Это должно бросать ошибку 500 inetrnal server из-за несоответствия типа: -

public static string SaveData(string Data) 
    {  
     //My Code 
     return "Success"; 
    } 

Вы передаете строку JSON, поэтому вам следует ожидать того же на стороне сервера и t десериализуйте его в объект .Net.

Update:

Вы можете использовать JavaScriptSerializer класса: -

public static string SaveData(string Data) 
{  
    JavaScriptSerializer json = new JavaScriptSerializer(); 
    List<GridData> mygridData = json.Deserialize<List<GridData>>(Data); 
    return "Success"; 
} 

Вы не пропускание List<String> первую очередь со стороны клиента, вы передаете JavaScript Object со свойствами. Таким образом, чтобы отобразить его в .NET вы должны определить эквивалентную Type вроде этого: -

public class GridData 
{ 
    public string Sr{ get; set; } 
    public string RollNo{ get; set; } 
    public string Name{ get; set; } 
    public string Marks{ get; set; }   
} 
+0

Привет @ Рахул Сингх. Я хочу получить массив на стороне сервера. Итак, как я могу десериализовать его в .Net-объект? –

+0

@ShaiwalTripathi - Проверьте мое обновление. –

+0

Что такое GridData? –

 Смежные вопросы

  • Нет связанных вопросов^_^