asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码 |
首先贴上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(); } 然后尝试着运行,这是出问题列,无论怎样运行都不能调到后台方法: 最后在网上查列好久 才发现在新建的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数据,知道的给解答下…… |