本文实例讲述了jquery解析json格式数据的方法。分享给大家供大家参考,具体如下:
json数据是我们常用的一种小型的数据实时交换的一个东西,他可以利用jquery或js进行解析,下面我来介绍jquery解析json字符串方法。
一、jQuery解析Json数据格式:
使用这种方法,你必须在Ajax请求中设置参数:
dataType: \"json\"
获取通过回调函数返回的数据并解析得到我们想要的值,看源码:
jQuery.ajax({ url: full_url, dataType: \"json\", success: function(results) { alert(result.name); } });
通常情况下,你可以从后台返回JSON数据,前台就交给jQuery啦,哈哈!!
jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例
例1
代码如下:
var data=\" { root: [ {name:\'1\',value:\'0\'}, {name:\'6101\',value:\'北京市\'}, {name:\'6102\',value:\'天津市\'}, {name:\'6103\',value:\'上海市\'}, {name:\'6104\',value:\'重庆市\'}, {name:\'6105\',value:\'渭南市\'}, {name:\'6106\',value:\'延安市\'}, {name:\'6107\',value:\'汉中市\'}, {name:\'6108\',value:\'榆林市\'}, {name:\'6109\',value:\'安康市\'}, {name:\'6110\',value:\'商洛市\'} ] }\";
jquery
$.getJSON(\"http://www.phpstudy.net/\",{param:\"sanic\"},function(data){ //此处返回的data已经是json对象 //以下其他操作同第一种情况 $.each(data.root,function(idx,item){ if(idx==0){ return true;//同countinue,返回false同break } alert(\"name:\"+item.name+\",value:\"+item.value); }); });
二、jQuery解析Json对象:
jQuery提供了另一种方法“parseJSON”,这需要一个标准的JSON字符串,并返回生成的JavaScript对象。让我们来看看语法:
jQuery.ajax({ url: dataURL, success: function(results) { var parsedJson = jQuery.parseJSON(results); alert(parsedJson.name); } });
补充:
jquery解析json数据完整实例:
var data=\" { root: [ {name:\'1\',value:\'0\'}, {name:\'6101\',value:\'北京市\'}, {name:\'6102\',value:\'天津市\'}, {name:\'6103\',value:\'上海市\'}, {name:\'6104\',value:\'重庆市\'}, {name:\'6105\',value:\'渭南市\'}, {name:\'6106\',value:\'延安市\'}, {name:\'6107\',value:\'汉中市\'}, {name:\'6108\',value:\'榆林市\'}, {name:\'6109\',value:\'安康市\'}, {name:\'6110\',value:\'商洛市\'} ] }\"; //data为字符串类型 则要将字符串类型转换成json数据类型 var jsondatas=eval(\"(\"+data+\")\"); $.each(jsondatas.root,function(i,n){ alert(\"name\"+n.name+\"value\"+n.value); } ) //以下为数组类型字符串 转换成json 字符串 解析 //数组形式的json字符串 var jsondata=\"[{name:\'1\',value:\'0\'}, {name:\'6101\',value:\'西安市\'}, {name:\'6102\',value:\'铜川市\'}, {name:\'6103\',value:\'宝鸡市\'}, {name:\'6104\',value:\'咸阳市\'}, {name:\'6105\',value:\'渭南市\'}, {name:\'6106\',value:\'延安市\'}, {name:\'6107\',value:\'汉中市\'}, {name:\'6108\',value:\'榆林市\'}, {name:\'6109\',value:\'安康市\'}, {name:\'6110\',value:\'商洛市\'}]\"; var json=eval(jsondata); $.each(json,function(i,n){ alert(json[i].name); alert(json[i].value);//根据索引取值 }); //json数据字符 不需要转换 var json={\"Products\":[ {\"orderid\":\"11077\",\"customerid\":\"RATTC\"}, {\"orderid\":\"11078\",\"customerid\":\"RATT\"} ], \"Img\":[{\"id\":\"12345\",\"url\" :\"image/1.jpg\"} ]}; $.each(json.Products,function(i,n){ alert(n.orderid); })
一般处理文件(Handler.ashx)
if (context.Request.QueryString[\"method\"] != null) { string method = context.Request.QueryString[\"method\"].ToString(); if (method == \"getlist\") { string str = ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString; SqlConnection conn = new SqlConnection(str); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = \"select ProID,ProName,url from Project where Adress = \'哈尔滨\'\"; DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds); string sb = CreateJsonParameters(ds.Tables[0]); context.Response.ClearContent(); context.Response.Write(sb.ToString()); context.Response.End(); } } } /// <summary> /// 构建JSON字符串 /// </summary> /// <param name=\"dt\"></param> /// <returns></returns> public string CreateJsonParameters(DataTable dt) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); if (dt != null && dt.Rows.Count > 0) { sb.Append(\"[\"); for (int i = 0; i < dt.Rows.Count; i++) { sb.Append(\"{\"); for (int j = 0; j < dt.Columns.Count; j++) { //如果值不是最后一个则添加逗号分隔 if (j < dt.Columns.Count - 1) { sb.Append(\"/\"\" + dt.Columns[j].ColumnName.ToString() + \"/\":\" + \"/\"\" + dt.Rows[i][j].ToString() + \"/\",\"); } //如果值为最后个字符则不添加逗号 else if (j == dt.Columns.Count - 1) { sb.Append(\"/\"\" + dt.Columns[j].ColumnName.ToString() + \"/\":\" + \"/\"\" + dt.Rows[i][j].ToString() + \"/\"\"); } } //如果为最后一个值的话 则不添加逗号 if (i == dt.Rows.Count - 1) { sb.Append(\"}\"); } else { sb.Append(\"},\"); } } sb.Append(\"]\"); return sb.ToString(); } else { return null; } }
$.ajax ( { type: \"POST\", url: \"Handler.ashx?method=getlist\", async: false,//true表示异步 false表示同步 contentType: \"application/json\", dataType: \'json\', success: function(result) { var temp=eval(result); //通过javascript来解析返回数组字符串 for (var i = 0; i < temp.length; i++) { o.innerHTML += \"项目名称:\" + result[i].ProName + \"<br/>网址:<a href=\" + result[i].url + \" mce_href=\" + result[i].url + \" target=\'_blank\'>\" + result[i].url + \"</a><br/>\"; datas += \"项目名称:\" + result[i].ProName + \"<br/>网址:<a href=\" + result[i].url + \" mce_href=\" + result[i].url + \" target=\'_blank\'>\" + result[i].url + \"</a><br/>\"; } TINY.box.show(datas, 0, 0, 0, 1); } });
希望本文所述对大家jQuery程序设计有所帮助。
本文地址:https://www.stayed.cn/item/2812
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我