2011-10-28 79 views
0

我希望能夠轉換在我的web服務中通過ajax(jquery)傳遞的JSON對象。目前我可以得到它返回消息「Hello World」,但我不知道如何訪問傳遞的JSON數據,然後轉換爲IList類型的集合,以便我可以遍歷集合。我已經看了一下在計算器上,但我很困惑該怎麼做可以幫助我一些人。如何傳遞JSON數據並將其轉換爲WebSerivce中的對象

這裏是我的代碼:

的jQuery:

var data = { dvals: [{'Name' : 'Acer', 'Count' : '2'}, {'Name' : 'HP', 'Count' : '4'} ] }; 

function getProducts(json, pageIndex, pageSize) { 
    json["PageIndex"] = pageIndex; 
    json["PageSize"] = pageSize; 

    $.ajax({ 
     type: 'POST', 
     url: '/website2/WebServices/GetProducts.asmx/GetProductsAndFilters', 
     data: JSON.stringify(json), 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (responseText) { 
      //alert(responseText.d); 
      $('.console').html(responseText.d); 
     }, 
     error: function (xhr, status, error) { 
      //var msg = JSON.parse(xhr.responseText); 
      //alert(msg.Message); 
      $('.console').html(xhr.responseText) 
     } 
    }); 
} 
getProducts(data, '0', '2'); 

我的asp.net C#:

public class Filter 
{ 
    public string Name; 
    public int Count; 
} 
public class Product 
{ 
    public int Id; 
    public string Title; 
    public string ShortDescription; 
    public string Brand; 
    public string Model; 
    public double SellPrice; 
    public string DescountPercentage; 
    public int Votes; 
    public int TotalRating; 
    public double Rating 
    { 
     get 
     { 
      return Votes/TotalRating; 
     } 
    } 
} 

public class FiltersAndProducts 
{ 
    List<Filter> Filters; 
    List<Product> Products; 
    int PageIndex; 
    int PageSize; 
} 

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetProductsAndFilters() 
{   
    return "Hello World"; 
} 
+1

您可以構建一個javascript對象(匹配您的c#類結構)並將其傳遞給您的Web服務。只要你的js的對象符合你的c#的類結構,就不需要顯式地將javascript對象轉換爲c#對象。 –

+0

你能給我一個例如你在說什麼,我從來沒有這樣做過一段時間。我不知道你在說什麼。我想要做的是根據通過哪些過濾器來執行操作,並獲取與這些過濾器相關的產品。如果你在我的GetProductsAndFilters函數中給了我一個例子,我可能會明白你在說什麼 – ONYX

回答

2

,如果你做出這樣

public class dvals{ 

public string Name{get;set;} 
public string Count{get;set;} 

} 

類準備JSON

var dvals =[{Name:'Acer',Count:'2'},{Name:'HP',Count:'4'}]; 
dval=JSON.stringify(dvals); 

通過AJAX發送

$.ajax({ 
     type: 'POST', 
     url: '/website2/WebServices/GetProducts.asmx/GetProductsAndFilters', 
     data: dval, 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (responseText) { 
      //alert(responseText.d); 
       console.log(responseText); 
      $('.console').html(responseText.d); 
     }, 
     error: function (xhr, status, error) { 
      //var msg = JSON.parse(xhr.responseText); 
      //alert(msg.Message); 
      $('.console').html(xhr.responseText) 
     } 
    }); 

webservice的側

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetProductsAndFilters(IList<dvals> dvalsList) 
{   
    return "Hello World"; 
} 
+0

我會試一試,稍後再謝謝你的平均時間。我希望它能起作用,如果其他人有更好的方法留下答案,謝謝 – ONYX

相關問題