2011-12-21 100 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对象数组。 –