asp.net下使用jquery 的ajax+WebService+json 實(shí)現(xiàn)無(wú)刷新取后臺(tái)值的實(shí)現(xiàn)代碼
更新時(shí)間:2010年09月19日 21:28:18 作者:
asp.net下使用jquery 的ajax+WebService+json 實(shí)現(xiàn)無(wú)刷新取后臺(tái)值的實(shí)現(xiàn)代碼 ,比頁(yè)面刷新更好,用戶體驗(yàn)更好,需要的朋友可以參考下。
首先貼上Jquery的ajax:
$.ajax({
url: 'ws_Ajax.asmx/BindDictByUpper',
type: 'POST',
contentType: 'application/json;charset=utf-8',
dataType: 'json',
data: '{ PpareId:"' + varlue + '"}',
success: function (data) {
var dataObj = eval("(" + data + ")");
// $('#myList').html('');
// for (var i = 0; i < msg.d.length; i++) {
// $('#myList').append('<li>' + msg.d[i] + '</li>');
// }
alert(dataObj);
$.each({ name: "John", lang: "JS" }, function (i, n) {
alert("Name: " + i + ", Value: " + n);
});
$.each(dataObj, function (idx, item) {
if (idx == 0) {
return true; //同countinue,返回false同break
}
alert("name:" + item['name'] + ",value:" + item['value']);
});
},
//data: '{query:"' + $('#editQuery').val() + '"}',
processData: false
});
好,前臺(tái)寫(xiě)好,建一個(gè)webservice頁(yè),寫(xiě)上方法:
/// <summary>
/// Datatable轉(zhuǎn)換為Json
/// </summary>
/// <param name="table">Datatable對(duì)象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DataTable Adt)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
foreach (DataRow pdr in Adt.Rows)
{
jsonString.Append("{");
jsonString.AppendFormat("name:\"{0}\",value:\"{1}\"", pdr["字典內(nèi)容"].ToString(), pdr["序號(hào)"].ToString());
jsonString.Append("},");
// jsonString.AppendFormat("{name:'{0}',value:'{1}'},", pdr["字典內(nèi)容"].ToString(), pdr["序號(hào)"].ToString());
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
然后嘗試著運(yùn)行,這是出問(wèn)題列,無(wú)論怎樣運(yùn)行都不能調(diào)到后臺(tái)方法:
最后在網(wǎng)上查列好久
才發(fā)現(xiàn)在新建的webservice頁(yè)少了一句關(guān)鍵的話:
[System.Web.Script.Services.ScriptService]
在類前面加上這句話就可以了
加上以后再運(yùn)行,好,可以調(diào)到后臺(tái)了
后臺(tái)的數(shù)據(jù)也發(fā)送到前臺(tái)
但又出現(xiàn)問(wèn)題列,發(fā)過(guò)來(lái)的數(shù)據(jù)不能以解析出來(lái)json數(shù)據(jù)
按網(wǎng)上說(shuō)的,只要把a(bǔ)jax中的dataType設(shè)置為json就行了,但是實(shí)際上不行,然后在網(wǎng)上查了下:
1、對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求沒(méi)做類型說(shuō)明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次
2.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求將type(一般為這個(gè)配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了,因?yàn)檫@時(shí)候得到的結(jié)果已經(jīng)是json對(duì)象了,只需直接調(diào)用該對(duì)象即可,這里以$.getJSON方法為例說(shuō)明數(shù)據(jù)處理方法
但是我把他的dataType設(shè)置為json,應(yīng)該直接可以用le?
于是我把傳回來(lái)的數(shù)據(jù)放在eval()方法里面處理了下,再調(diào)用就可以le?
這樣前臺(tái)調(diào)出來(lái)的數(shù)據(jù)就可以直接按你需要的方式處理了。
我這里還又一個(gè)疑問(wèn):
我用這種方式取數(shù)為什么查不出來(lái)數(shù)據(jù)(我對(duì)json不是很熟,第一次用):
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});
網(wǎng)上看的這樣方式頁(yè)可以調(diào)用json數(shù)據(jù),知道的給解答下……
復(fù)制代碼 代碼如下:
$.ajax({
url: 'ws_Ajax.asmx/BindDictByUpper',
type: 'POST',
contentType: 'application/json;charset=utf-8',
dataType: 'json',
data: '{ PpareId:"' + varlue + '"}',
success: function (data) {
var dataObj = eval("(" + data + ")");
// $('#myList').html('');
// for (var i = 0; i < msg.d.length; i++) {
// $('#myList').append('<li>' + msg.d[i] + '</li>');
// }
alert(dataObj);
$.each({ name: "John", lang: "JS" }, function (i, n) {
alert("Name: " + i + ", Value: " + n);
});
$.each(dataObj, function (idx, item) {
if (idx == 0) {
return true; //同countinue,返回false同break
}
alert("name:" + item['name'] + ",value:" + item['value']);
});
},
//data: '{query:"' + $('#editQuery').val() + '"}',
processData: false
});
好,前臺(tái)寫(xiě)好,建一個(gè)webservice頁(yè),寫(xiě)上方法:
復(fù)制代碼 代碼如下:
/// <summary>
/// Datatable轉(zhuǎn)換為Json
/// </summary>
/// <param name="table">Datatable對(duì)象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DataTable Adt)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
foreach (DataRow pdr in Adt.Rows)
{
jsonString.Append("{");
jsonString.AppendFormat("name:\"{0}\",value:\"{1}\"", pdr["字典內(nèi)容"].ToString(), pdr["序號(hào)"].ToString());
jsonString.Append("},");
// jsonString.AppendFormat("{name:'{0}',value:'{1}'},", pdr["字典內(nèi)容"].ToString(), pdr["序號(hào)"].ToString());
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
然后嘗試著運(yùn)行,這是出問(wèn)題列,無(wú)論怎樣運(yùn)行都不能調(diào)到后臺(tái)方法:
最后在網(wǎng)上查列好久
才發(fā)現(xiàn)在新建的webservice頁(yè)少了一句關(guān)鍵的話:
復(fù)制代碼 代碼如下:
[System.Web.Script.Services.ScriptService]
在類前面加上這句話就可以了
加上以后再運(yùn)行,好,可以調(diào)到后臺(tái)了
后臺(tái)的數(shù)據(jù)也發(fā)送到前臺(tái)
但又出現(xiàn)問(wèn)題列,發(fā)過(guò)來(lái)的數(shù)據(jù)不能以解析出來(lái)json數(shù)據(jù)
按網(wǎng)上說(shuō)的,只要把a(bǔ)jax中的dataType設(shè)置為json就行了,但是實(shí)際上不行,然后在網(wǎng)上查了下:
1、對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求沒(méi)做類型說(shuō)明,或者以字符串方式接受,那么需要做一次對(duì)象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次
2.對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求將type(一般為這個(gè)配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了,因?yàn)檫@時(shí)候得到的結(jié)果已經(jīng)是json對(duì)象了,只需直接調(diào)用該對(duì)象即可,這里以$.getJSON方法為例說(shuō)明數(shù)據(jù)處理方法
但是我把他的dataType設(shè)置為json,應(yīng)該直接可以用le?
于是我把傳回來(lái)的數(shù)據(jù)放在eval()方法里面處理了下,再調(diào)用就可以le?
這樣前臺(tái)調(diào)出來(lái)的數(shù)據(jù)就可以直接按你需要的方式處理了。
我這里還又一個(gè)疑問(wèn):
我用這種方式取數(shù)為什么查不出來(lái)數(shù)據(jù)(我對(duì)json不是很熟,第一次用):
復(fù)制代碼 代碼如下:
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});
網(wǎng)上看的這樣方式頁(yè)可以調(diào)用json數(shù)據(jù),知道的給解答下……
您可能感興趣的文章:
- Jquery + Ajax調(diào)用webService實(shí)例代碼(asp.net)
- jQuery AJAX 調(diào)用WebService實(shí)現(xiàn)代碼
- 關(guān)于jquery ajax 調(diào)用帶參數(shù)的webservice返回XML數(shù)據(jù)一個(gè)小細(xì)節(jié)
- jQuery Ajax方法調(diào)用 Asp.Net WebService 的詳細(xì)實(shí)例代碼
- Jquery ajax傳遞復(fù)雜參數(shù)給WebService的實(shí)現(xiàn)代碼
- Jquery Ajax學(xué)習(xí)實(shí)例6 向WebService發(fā)出請(qǐng)求,返回DataSet(XML) 異步調(diào)用
- Jquery Ajax學(xué)習(xí)實(shí)例3 向WebService發(fā)出請(qǐng)求,調(diào)用方法返回?cái)?shù)據(jù)
- Jquery Ajax學(xué)習(xí)實(shí)例4 向WebService發(fā)出請(qǐng)求,返回實(shí)體對(duì)象的異步調(diào)用
- Jquery Ajax學(xué)習(xí)實(shí)例5 向WebService發(fā)出請(qǐng)求,返回泛型集合數(shù)據(jù)的異步調(diào)用
- jQuery ajax調(diào)用webservice注意事項(xiàng)
相關(guān)文章
jQuery實(shí)現(xiàn)遮罩層登錄對(duì)話框
用戶登錄是許多網(wǎng)站必備的功能。有一種方式就是不管在網(wǎng)站的哪個(gè)頁(yè)面,點(diǎn)擊登錄按鈕就會(huì)彈出一個(gè)遮罩層,顯示用戶登錄的對(duì)話框。本文將推薦一個(gè)帶二維碼的登錄彈出層,可拖動(dòng)、關(guān)閉,有需要的朋友可以參考一下。2016-12-12
原生Aajax 和jQuery Ajax 寫(xiě)法個(gè)人總結(jié)
AJAX:即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。本文重點(diǎn)給大家介紹原生Aajax 和jQuery Ajax 個(gè)人總結(jié),一起看看吧2017-03-03
jquery使用canvas標(biāo)簽繪制驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了Jquery中用canvas標(biāo)簽繪制驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
淺談jquery采用attr修改form表單enctype不起作用的問(wèn)題
下面小編就為大家?guī)?lái)一篇淺談jquery采用attr修改form表單enctype不起作用的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
jquery checkbox無(wú)法用attr()二次勾選問(wèn)題的解決方法
下面小編就為大家?guī)?lái)一篇jquery checkbox無(wú)法用attr()二次勾選問(wèn)題的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
20個(gè)非常棒的Jquery實(shí)用工具 國(guó)外文章
網(wǎng)站設(shè)計(jì)者往往會(huì)設(shè)計(jì)一些小的工具類(widgets)或者一些可復(fù)用的程序,從而使頁(yè)面更楚楚動(dòng)人,更吸引瀏覽者駐足。這里收集了20個(gè)常用Jquery工具類,這些小的工具可以幫助網(wǎng)站設(shè)計(jì)人員和站長(zhǎng)非常容易地創(chuàng)建漂亮的站點(diǎn)。2010-01-01
jquery點(diǎn)擊切換背景色的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇jquery點(diǎn)擊切換背景色的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08

