2011-12-21 96 views
0

我需要一些幫助,我的Web服務和JSON調用..堅持嘗試獲取數據返回,我已經成功完成了字符串和對象..但不是數組...ASP.NET Web服務JSON數組

我的Web服務包含:

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetSearchCriteria() 
{ 
    var js = new JavaScriptSerializer(); 
    var obj = HttpContext.Current.Session["mysessionname"]; 
    if (obj == null) 
    { 
     var result = new Criteria[] 
     { 
      new Criteria() { Key = Guid.NewGuid(), Operator = "=", ColumnName = "CheckID", Value = "" } 
     }; 

     var serial = js.Serialize(result); 
     return serial; 
    } 
    else 
    { 
     var serial = js.Serialize((Criteria[])obj); 
     return serial; 
    } 
} 

標準是:

[Serializable] 
public class Criteria 
{ 
    public Guid Key { get; set; } 
    public string ColumnName { get; set; } 
    public string Operator { get; set; } 
    public string Value { get; set; } 
} 

我的頁面:

<script type="text/javascript"> 
    function RefreshCriteria() { 
     $.ajax({ 
      type: 'POST', 
      url: '<%= System.Web.VirtualPathUtility.ToAbsolute("~/Services/WebService.asmx/GetSearchCriteria") %>', 
      dataType: 'json', 
      beforeSend: function (xhr) { 
       xhr.setRequestHeader("Content-type", 
          "application/json; charset=utf-8"); 
      }, 
      success: function (data) { 
       $(data).each(function (i) { 
        var obj = data[i]; 
        alert(obj); 
       }); 
      } 
     }); 

    } 

    $(document).ready(function() { 
     RefreshCriteria(); 
    }); 
</script> 

什麼我得到未定義每次..試圖做

$(data).each(function (i) { 
    var obj = data[i]; 
    alert(obj); 
}); 


$(data).each(function (i, obj) { 
    alert(obj); 
}); 

$(data).each(function (i) { 
    alert(this); 
}); 

無到目前爲止的工作..

回答

2

可以收緊AJAX

$.ajax({ 
    type: 'POST', 
    url: '*you need a url here*', 
    dataType: 'json', 
    success: function (data) { 
     $(data).each(function (index, item) { 
     console.log(item); 
     }); 
    } 
}); 

未來無論是使用螢火蟲或提琴手監視請求/響應,以確保你發送和接收的是你的預期。

+0

當我調試..從web服務返回的串行變量顯示「[{\」密鑰\「:\」07bc31be-be37-4fa8-a144-16e0626c1500 \「,\」ColumnName \「:\」CheckID \「,\」Operator \「:\」= \「,\」Value \「:\」\「}]」 – jaekie

+0

啊..剛剛得到它..必須做成功:功能(數據){obj} = jQuery.parseJSON(data.d); (函數(i,item)){ alert(item.Key); }); } – jaekie

+0

這是因爲您返回的結果是一個字符串,因此json字符串會被轉義,因此它是一個字面字符串。試試這從你的web服務器返回一個標準數組(不需要json引用)。這應該使數據在jQuery中爭論一個json對象數組。 –