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);
});
无到目前为止的工作..
当我调试..从web服务返回的串行变量显示“[{\”密钥\“:\”07bc31be-be37-4fa8-a144-16e0626c1500 \“,\”ColumnName \“:\”CheckID \“,\”Operator \“:\”= \“,\”Value \“:\”\“}]” – jaekie
啊..刚刚得到它..必须做成功:功能(数据){obj} = jQuery.parseJSON(data.d); (函数(i,item)){ alert(item.Key); }); } – jaekie
这是因为您返回的结果是一个字符串,因此json字符串会被转义,因此它是一个字面字符串。试试这从你的web服务器返回一个标准数组(不需要json引用)。这应该使数据在jQuery中争论一个json对象数组。 –