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對象數組。 –