2016-11-04 4 views
0

В моем проекте я хочу использовать ajax для связи между JS и ASP. Тем не менее, я получил 500 ошибок.Как создать массив строк в ajax и передать его asp?

JSON строки в JS AJAX:

{lists: [{'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a111', 'colour': 'red'}, {'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a222', 'colour': 'green'}]} 

C#

[WebMethod] 
public static string GetCurrentTime(List<string> lists) 
{ 
    return "text string" ; 
} 

ПОЛНЫЙ АЯКС:

var dataJson = "{lists: [{'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a111', 'colour': 'red'}, {'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a222', 'colour': 'green'}]}"; 
    $.ajax({ 
      type: "POST", 
      url: URL, 
      data: dataJson , 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
function OnSuccess(response) { 
     console.log(response.d); 
    } 

ответ

1

Попробуйте использовать JSON.stringify, как показано ниже с помощью объекта вместо List<string>,

var dataJson = {lists: [{'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a111', 'colour': 'red'}, {'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a222', 'colour': 'green'}]}; 
    $.ajax({ 
      type: "POST", 
      url: URL, 
      data: JSON.stringify(dataJson), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      failure: function (response) { 
       alert(response.d); 
      } 
     }); 
function OnSuccess(response) { 
     console.log(response.d); 
    } 

C#

public class Data { 
     public string ID {get;set;} 
     public string colour {get;set;} // This can be renamed into Pascal case here and in the json 
     } 

[WebMethod] 
public static string GetCurrentTime(List<Data> lists) 
{ 
    return "text string" ; 
} 
+0

Я обновил код. Пожалуйста попробуйте. Он не должен быть «List », поскольку ваш json имеет массив объектов, а не строковый массив. – Aruna

+0

Я печатаю ошибку в консоли. В нем говорится: «Невозможно преобразовать объект типа« System.String »в тип« System.Collections.Generic.IDictionary'2 [System.String, System.Object] ' –

+0

Да, это то, что я сказал в моем предыдущем комментарии. Попробуйте мой обновленный код как для Javascript, так и для C# – Aruna

0

Попробуйте это

<script> 

     $(function() { 
      //alert('jQuery'); 
      var URL = 'WebForm1.aspx/GetCurrentTime'; 
      var dataJson = { lists: [{ 'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a111', 'colour': 'red' }, { 'ID': 'a95fed0d-c1e4-45e8-2cd2-e5d7f099a222', 'colour': 'green'}] }; 
      $.ajax({ 
       type: "POST", 
       url: URL, 
       data: JSON.stringify(dataJson), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       failure: function (response) { 
        alert(response.d); 
       } 
      }); 
      function OnSuccess(response) { 
       console.log(response.d); 
      } 
     }); 
    </script> 

.cs

public class ListObject 
    { 
     public string ID { get; set; } 
     public string colour { get; set; } 
    } 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     [WebMethod] 
     public static string GetCurrentTime(object lists) 
     { 

      List<ListObject> objects = new List<ListObject>(); 
      Object[] results = (Object[])lists; 

      foreach (Dictionary<String, Object> result in results) 
      { 
       var properties = result as Dictionary<string, object>; 
       List<String> propertyNames = new List<string>(); 
       String ID=String.Empty; 
       String colour = String.Empty; 
       int idFlag = 0; 
       foreach (var p in properties) 
       { 
        if (idFlag == 0) 
        { 
         ID= p.Value.ToString(); 
         idFlag = 1; 
        } 
        else 
        { 
         colour = p.Value.ToString(); 
        } 
        //String sjs = p.ToString().Replace("[","").Replace("]","").Split(',')[1]; 

       } 

        objects.Add(new ListObject 
       { 
        ID = ID, 
        colour = colour 
       }); 
      } 


      return "text string"; 
     } 
    } 
Смежные вопросы