天天看點

asp.net :使用jquery 的ajax +WebService+json 實作無重新整理去背景值

首先貼上Jquery的ajax:

asp.net :使用jquery 的ajax +WebService+json 實作無重新整理去背景值
asp.net :使用jquery 的ajax +WebService+json 實作無重新整理去背景值

代碼

$.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頁,寫上方法:

asp.net :使用jquery 的ajax +WebService+json 實作無重新整理去背景值
asp.net :使用jquery 的ajax +WebService+json 實作無重新整理去背景值

/// <summary>

/// Datatable轉換為Json

/// </summary>

/// <param name="table">Datatable對象</param>

/// <returns>Json字元串</returns>

   //然後在webservice中需要傳回json資料的方法加上如下屬性

  [ScriptMethod(ResponseFormat=ResponseFormat.Json)]

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();

 ScriptMethod在 using System.Web.Script.Services 命名空間下,這裡還可以設定是否使用 get方式來調用 UseHttpGet=true

然後嘗試着運作,這是出問題列,無論怎樣運作都不能調到背景方法:

最後在網上查列好久

才發現在建立的webservice頁少了一句關鍵的話:

[System.Web.Script.Services.ScriptService]

在類前面加上這句話就可以了

加上以後再運作,好,可以調到背景了

背景的資料也發送到前台

但又出現問題列,發過來的資料不能以解析出來json資料

按網上說的,隻要把ajax中的dataType設定為json就行了,但是實際上不行,然後在網上查了下:

1、對于伺服器傳回的JSON字元串,如果jquery異步請求沒做類型說明,或者以字元串方式接受,那麼需要做一次對象化處理,方式不是太麻煩,就是将該字元串放于eval()中執行一次 

2.對于伺服器傳回的JSON字元串,如果jquery異步請求将type(一般為這個配置屬性)設為“json”,或者利用$.getJSON()方法獲得伺服器傳回,那麼就不需要eval()方法了,因為這時候得到的結果已經是json對象了,隻需直接調用該對象即可,這裡以$.getJSON方法為例說明資料處理方法

但是我把他的dataType設定為json,應該直接可以用le?

于是我把傳回來的資料放在eval()方法裡面處理了下,再調用就可以le?

這樣前台調出來的資料就可以直接按你需要的方式處理了。

我這裡還又一個疑問:

我用這種方式取數為什麼查不出來資料(我對json不是很熟,第一次用):

$.each(data.root,function(idx,item){

if(idx==0){

return true;//同countinue,傳回false同break

alert("name:"+item.name+",value:"+item.value);

網上看的這樣方式頁可以調用json資料,知道的給解答下……

繼續閱讀