jquery处理网页特效on的方法javascript
jquery处理json的方法是直接eval,给一个变量,可是,今天看到其源代码,证实个人想法完全错了。html
它先断定有没有window.json.parse这个方法,若是有,直接用这个方法解析,若是没有,会new一个匿名函数,里面的内容,就是返回json的执行结果。java
我试了一下,window.json这个对象,在firefox/webkit的浏览器中存在,但ie6-ie8都没有。jquery
另外,若是你们须要解析json字符串,能够直接使用jquery的parsejson方法,虽然这个方法在手册中没有出现,例:web
var json_str = '{"a":1, "b":2}';ajax
var data = $.parsejson(json_str);
alert(data.a)
更详细的json处理方法与原理json
jquery异步获取的数据类型——网页特效on对象和字符串为依据,分别介绍两种方式获取到的结果处理方式。
1.对于服务器返回的网页特效on字符串,若是jquery异步请求没作类型说明,或者以字符串方式接受,那么须要作一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,如下举例说明:c#
var dataobj=eval("("+data+")");//转换为json对象
alert(dataobj.root.length);//输出root的子对象数量
$.each(dataobj.root,fucntion(idx,item){
if(idx==0){
return true;
}
//输出每一个root子对象的名称和值浏览器
alert("name:"+item.name+",value:"+item.value);
})
注:对于通常的js生成json对象,只须要将$.each()方法替换为for语句便可,其余不变。
2.对于服务器返回的json字符串,若是jquery异步请求将type(通常为这个配置属性)设为“json”,或者利用$.getjson()方法得到服务器返回,那么就不须要eval()方法了,由于这时候获得的结果已是json对象了,只需直接调用该对象便可,这里以$.getjson方法为例说明数据处理方法:服务器
$.getjson("http://gaoyusi.blog.163.com/",{param:"gaoyusi"},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数据实例
<title>jquery获取json数据演示页面</title>
<script type="text/网页特效" src="js/jquery-1.2.1.pack.js"></script>
<script type="text/javascript">
function getdata(){
$("#list").html("");//清空列表中的数据
//发送ajax请求
$.getjson(
"jsondata.ashx",//产生json数据的服务端页面
{name:"test",age:20},//向服务器发出的查询字符串(此参数可选)
//对返回的json数据进行处理,本例以列表的形式呈现
function(json){
//循环取json中的数据,并呈如今列表中
$.each(json,function(i){
$("#list").append("<li>name:"+json[i].name+" age:"+json[i].age+"</li>")
})
})
}
</script>
asp教程.net
:<%@ webhandler language="c#" class="jsondata" %>
using system;
using system.web;public class jsondata : ihttphandler {
public void processrequest (httpcontext context) {
context.response.contenttype = "text/plain";
string data = "[{name:\"ants\",age:24},{name:\"lele\",age:23}]";//构建的json数据
//下面两句是用来测试前台向此页面发出的查询字符
string querystrname = context.request.querystring.getvalues("name")[0];//取查询字符串中namer的值
string querystage = context.request.querystring.getvalues("age")[0];//取查询字符串中age的值
context.response.write(data);
}
public bool isreusable {
get {
return false;
}
}}