2011-03-19 46 views
19

我使用asp.net和web表單。 在項目中,我ASMX Web服務asp.net web表單json返回結果

[WebMethod] 
    public string GetSomething() 
    { 
     // avoid circual reference(parent child) 
     List<RetUsers> res = repo.GetAllUser().Select(c => new RetUsers {User_ID = c.User_ID,User_Name = c.User_Name,Date_Expire = c.Date_Expire }).ToList(); 
     string res1 = res.ToJson(); 
     // extension methods 
     return res.ToJson(); 
    } 

而結果是這種格式。

[ 
    {"User_ID":1,"User_Name":"Test 1","Date_Expire":null}, 
    {"User_ID":2,"User_Name":"Test 2","Date_Expire":null} 
] 

我如何可以追加標記這個結果$阿賈克斯sucess得到這個輸出:

1 - 測試1,2 - 測試2.

+0

Web方法也應該是一個類成員(static關鍵字在C#中設置) – leojh 2013-01-09 23:50:33

回答

36

返回列表代替,並使用[ScriptMethod(ResponseFormat = ResponseFormat.Json)]屬性 - 它會創建JSON對象作爲自動返回:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<RetUsers> GetSomething() 
{ 
    // avoid circual reference(parent child) 
    List<RetUsers> res = repo.GetAllUser().Select(c => new RetUsers {User_ID = c.User_ID,User_Name = c.User_Name,Date_Expire = c.Date_Expire }).ToList(); 

    return res; 
} 

而且在JS方面:

$.ajax(
{ 
    type: "POST", 
async: true, 
url: YourMethodUrl, 
data: {some data}, 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
    success: function(msg) 
    { 
     var resultAsJson = msg.d // your return result is JS array 
     // Now you can loop over the array to get each object 
     for(var i in resultAsJson) 
     { 
      var user = resultAsJson[i] 
      var user_name = user.User_Name 
      // Here you append that value to your label 
     } 
    } 
}) 
+1

你怎麼稱呼這種GetSomething URL首先,在Web表單應用程序? – WEFX 2011-11-03 15:42:53

+4

YourMethodUrl ='http:// example.com/yourwebservice.asmx/GetSomething' – Andrey 2011-11-06 04:14:15