2012-01-29 62 views
1

我有一個IEnumerable集合的自定義數據類型,我正在發送給客戶端。 我想解析我的JQuery方法中的集合。目前我的價值爲「未定義」。下面是我的代碼:如何在JQuery中解析集合

服務:

[OperationContract] 
[WebGet(BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)] 
IEnumerable<CustomData> GetSetting(long userId); 

    public IEnumerable<CustomData> GetSetting(long userId) 
    { 
     var tempData = Context.DialogSettings.Where(item => item.id == userId).ToList(); 
     return tempData.Select(dialogSetting => new CustomData { KeyName = dialogSetting.KeyName, KeyValue = dialogSetting.KeyValue }).ToList(); 
    } 


[DataContract] 
public class CustomData 
{ 
    [DataMember] 
    public String KeyName; 
    [DataMember] 
    public String KeyValue; 
} 

客戶:

function LoadSetting() { 
       $.ajax({ 
        type: "GET", 
        url: "SampleService.svc/GetSetting", 
        data: '{"userId": "' + 1 + '"}', 
        processData: true, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (data) { 
         var myHistoryList = data.d; 
         alert(myHistoryList); // here I'm getting value: undefined 
        }, 
        error: function (result) { 
         alert('Service call failed: ' + result.status + '' + result.statusText); 
        } 
       }); 
      } 
     }); 
+3

你嘗試過'提醒(數據)'嗎? – georg 2012-01-29 10:34:36

+0

除了thg435的說法,如果你正在發送一個集合/列表,你會不會期望'data'是一個對象數組?你的ajax成功回調中'data.length'也未定義? – nnnnnn 2012-01-29 10:49:42

+1

爲什麼'data'有一個'd' var,如果它是一個列表??? – gdoron 2012-01-29 10:54:54

回答

2

從對問題的意見,我可以有把握地假定下面的js代碼將工作:

if(typeof data != 'undefined'){ 
    alert(data[0].KeyName); //this will yield a value. 
} 
else 
    alert('Ok. This is weird'); 
+0

謝謝。您的解決方案在通過api 2控制器返回IEnumerable 時有效 – ModChowdhury 2017-05-15 12:33:42