asp.net下使用jquery 的ajax+WebService+json 實現(xiàn)無刷新取后臺值的實現(xiàn)代碼
更新時間:2010年09月19日 21:28:18 作者:
asp.net下使用jquery 的ajax+WebService+json 實現(xiàn)無刷新取后臺值的實現(xià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
});
好,前臺寫好,建一個webservice頁,寫上方法:
/// <summary>
/// Datatable轉換為Json
/// </summary>
/// <param name="table">Datatable對象</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["字典內容"].ToString(), pdr["序號"].ToString());
jsonString.Append("},");
// jsonString.AppendFormat("{name:'{0}',value:'{1}'},", pdr["字典內容"].ToString(), pdr["序號"].ToString());
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
然后嘗試著運行,這是出問題列,無論怎樣運行都不能調到后臺方法:
最后在網上查列好久
才發(fā)現(xiàn)在新建的webservice頁少了一句關鍵的話:
[System.Web.Script.Services.ScriptService]
在類前面加上這句話就可以了
加上以后再運行,好,可以調到后臺了
后臺的數(shù)據(jù)也發(fā)送到前臺
但又出現(xiàn)問題列,發(fā)過來的數(shù)據(jù)不能以解析出來json數(shù)據(jù)
按網上說的,只要把ajax中的dataType設置為json就行了,但是實際上不行,然后在網上查了下:
1、對于服務器返回的JSON字符串,如果jquery異步請求沒做類型說明,或者以字符串方式接受,那么需要做一次對象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次
2.對于服務器返回的JSON字符串,如果jquery異步請求將type(一般為這個配置屬性)設為“json”,或者利用$.getJSON()方法獲得服務器返回,那么就不需要eval()方法了,因為這時候得到的結果已經是json對象了,只需直接調用該對象即可,這里以$.getJSON方法為例說明數(shù)據(jù)處理方法
但是我把他的dataType設置為json,應該直接可以用le?
于是我把傳回來的數(shù)據(jù)放在eval()方法里面處理了下,再調用就可以le?
這樣前臺調出來的數(shù)據(jù)就可以直接按你需要的方式處理了。
我這里還又一個疑問:
我用這種方式取數(shù)為什么查不出來數(shù)據(jù)(我對json不是很熟,第一次用):
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});
網上看的這樣方式頁可以調用json數(shù)據(jù),知道的給解答下……
復制代碼 代碼如下:
$.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
});
好,前臺寫好,建一個webservice頁,寫上方法:
復制代碼 代碼如下:
/// <summary>
/// Datatable轉換為Json
/// </summary>
/// <param name="table">Datatable對象</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["字典內容"].ToString(), pdr["序號"].ToString());
jsonString.Append("},");
// jsonString.AppendFormat("{name:'{0}',value:'{1}'},", pdr["字典內容"].ToString(), pdr["序號"].ToString());
}
jsonString.Remove(jsonString.Length - 1, 1);
jsonString.Append("]");
return jsonString.ToString();
}
然后嘗試著運行,這是出問題列,無論怎樣運行都不能調到后臺方法:
最后在網上查列好久
才發(fā)現(xiàn)在新建的webservice頁少了一句關鍵的話:
復制代碼 代碼如下:
[System.Web.Script.Services.ScriptService]
在類前面加上這句話就可以了
加上以后再運行,好,可以調到后臺了
后臺的數(shù)據(jù)也發(fā)送到前臺
但又出現(xiàn)問題列,發(fā)過來的數(shù)據(jù)不能以解析出來json數(shù)據(jù)
按網上說的,只要把ajax中的dataType設置為json就行了,但是實際上不行,然后在網上查了下:
1、對于服務器返回的JSON字符串,如果jquery異步請求沒做類型說明,或者以字符串方式接受,那么需要做一次對象化處理,方式不是太麻煩,就是將該字符串放于eval()中執(zhí)行一次
2.對于服務器返回的JSON字符串,如果jquery異步請求將type(一般為這個配置屬性)設為“json”,或者利用$.getJSON()方法獲得服務器返回,那么就不需要eval()方法了,因為這時候得到的結果已經是json對象了,只需直接調用該對象即可,這里以$.getJSON方法為例說明數(shù)據(jù)處理方法
但是我把他的dataType設置為json,應該直接可以用le?
于是我把傳回來的數(shù)據(jù)放在eval()方法里面處理了下,再調用就可以le?
這樣前臺調出來的數(shù)據(jù)就可以直接按你需要的方式處理了。
我這里還又一個疑問:
我用這種方式取數(shù)為什么查不出來數(shù)據(jù)(我對json不是很熟,第一次用):
復制代碼 代碼如下:
$.each(data.root,function(idx,item){
if(idx==0){
return true;//同countinue,返回false同break
}
alert("name:"+item.name+",value:"+item.value);
});
});
網上看的這樣方式頁可以調用json數(shù)據(jù),知道的給解答下……
您可能感興趣的文章:
- Jquery + Ajax調用webService實例代碼(asp.net)
- jQuery AJAX 調用WebService實現(xiàn)代碼
- 關于jquery ajax 調用帶參數(shù)的webservice返回XML數(shù)據(jù)一個小細節(jié)
- jQuery Ajax方法調用 Asp.Net WebService 的詳細實例代碼
- Jquery ajax傳遞復雜參數(shù)給WebService的實現(xiàn)代碼
- Jquery Ajax學習實例6 向WebService發(fā)出請求,返回DataSet(XML) 異步調用
- Jquery Ajax學習實例3 向WebService發(fā)出請求,調用方法返回數(shù)據(jù)
- Jquery Ajax學習實例4 向WebService發(fā)出請求,返回實體對象的異步調用
- Jquery Ajax學習實例5 向WebService發(fā)出請求,返回泛型集合數(shù)據(jù)的異步調用
- jQuery ajax調用webservice注意事項
相關文章
淺談jquery采用attr修改form表單enctype不起作用的問題
下面小編就為大家?guī)硪黄獪\談jquery采用attr修改form表單enctype不起作用的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
jquery checkbox無法用attr()二次勾選問題的解決方法
下面小編就為大家?guī)硪黄猨query checkbox無法用attr()二次勾選問題的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07

