最近在使用JQuery的ajax方法時,要求返回的數據為json數據,在處理的過程中遇到下面的幾個問題,那就是采用不同的方式來生成json數據的時候,在$.ajax方法中應該是如何來處理的,下面依次來進行說明,由於本人使用的是asp.net,所以處理的頁面都是采用.net來做的!其他的方式應該是相同的吧
首先給出要傳的json數據:[{"demoData":"This Is The JSON Data"}]
1,使用普通的aspx頁面來處理
本人覺得這種方式處理起來是最簡單的瞭,看下面的代碼吧
$.ajax({
type: "post",
url: "Default.aspx",
dataType: "json",
success: function (data) {
$( "input#showTime").val(data[0].demoData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
這裡是後臺傳遞數據的代碼
Response.Clear();
Response.Write( "[{\"demoData\":\"This Is The JSON Data\"}]");
Response.Flush();
Response.End();
這種處理的方式將傳遞過來的數據直接解析為json數據,也就是說這裡的前臺js代碼可能直接把這些數據解析成json對象數據,而並非字符串數據,如data[0].demoData,這裡就直接使用瞭這個json對象數據
2,使用webservice(asmx)來處理
這種處理方式就不會將傳遞過來的數據當成是json對象數據,而是作為字符串來處理的,如下代碼
$.ajax({
type: "post",
url: "JqueryCSMethodForm.asmx/GetDemoData",
dataType: "json", /*這句可用可不用,沒有影響*/
contentType: "application/json; charset=utf-8",
success: function (data) {
$( "input#showTime").val(eval('(' + data.d + ')')[0].demoData);
//這裡有兩種對數據的轉換方式,兩處理方式的效果一樣//$("input#showTime").val(eval(data.d)[0].demoData);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
下面這裡為asmx的方法代碼
[WebMethod] www.aiwalls.com
public static string GetDemoData() {
return "[{\"demoData\":\"This Is The JSON Data\"}]";
}
這裡的這種處理方式就把傳遞回來的json數據當成瞭字符串來處理的,所在就要對這個數據進行eval的處理,這樣才能成為真正的json對象數據,
3,使用ashx文件來處理
這種方式和普通的aspx的頁面處理是一樣的所以這裡就不多做解釋瞭
作者:xiahuawuyu