最近在使用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);
}
});
這裏是後臺傳遞數據的代碼
![](http://static.javashuo.com/static/loading.gif)
Response.Clear();
![](http://static.javashuo.com/static/loading.gif)
Response.Write(
"[{\"demoData\":\"This Is The JSON Data\"}]");
![](http://static.javashuo.com/static/loading.gif)
Response.Flush();
![](http://static.javashuo.com/static/loading.gif)
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的方法代碼
![](http://static.javashuo.com/static/loading.gif)
[WebMethod]
public
static
string GetDemoData() {
return
"[{\"demoData\":\"This Is The JSON Data\"}]";
![](http://static.javashuo.com/static/loading.gif)
}
這裏的這種處理方式就把傳遞回來的json數據當成了字符串來處理的,所在就要對這個數據進行eval的處理,這樣才能成爲真正的json對象數據,
3,使用ashx文件來處理
這種方式和普通的aspx的頁面處理是同樣的因此這裏就很少作解釋了!