Jquery实现Ajax的疑点

爱生活爱拼搏!一起学习----有错误请大虾们指点下。。。。。。。。。

今天遇到个问题,于是写了个简单的实例:JQuery实现Ajax实现JSON方式显示获取的数据:
关键代码如下:
//接收json
var s="";
$("#button").click(
function(){
//通过jQuery请求JsonServlet
$.post("JsonServlet",function(data){
s+=data.name+"\n"+data.sex+"\n"+data.age;
alert(s);//第一次显示s消息框
},"json");
alert(s);//接着显示
}
);
页面代码一句:
<input type="button" value="test3" id="button"/>
Servlet代码:
JSONObject j = new JSONObject();
j.put("name", "admin");
j.put("sex", "boy");
j.put("age", 16);
PrintWriter out = response.getWriter();
out.println(j.toString());
out.flush();
运行第一次点击按钮页面跳出两个消息框:
第一次点击时候------------>
显示获取json里面的数据:
[img]http://dl.iteye.com/upload/attachment/0075/4466/a41ef8c6-8ded-3bbd-9fd2-16808e177502.jpg[/img]
接着第二个消息框----------->
[img]http://dl.iteye.com/upload/attachment/0075/4470/32022265-ef70-33b9-94c3-afe4c28056b4.jpg[/img]

接着第二次点击按钮页面跳出两个消息框:
第一个依然是接受json中的数据--->
[img]http://dl.iteye.com/upload/attachment/0075/4472/4e1c9e2f-d9e4-3d35-a50c-d1f352f31e86.jpg[/img]
接着第二个消息框-------------->
[img]http://dl.iteye.com/upload/attachment/0075/4474/5bd27e5f-d550-3e24-a94d-2804392489d4.jpg[/img]

假如代码是这样-------------------->
//接收json
$("#button").click(
function(){
var s="";
//通过jQuery请求JsonServlet
$.post("JsonServlet",function(data){
s+=data.name+"\n"+data.sex+"\n"+data.age;
alert(s);
},"json");
alert(s);
}
);
则不论点击多久都只会出现上面第一次点击的效果,第二个消息框总是为空;

我想这就是Ajax异步机制的原理么,如果把这当成线程看待:
异步消息处理线程是指:线程启动后会进入一个无限循环体之中,每执行一次,从线程内部的消息队列中取出一个消息,并回调相应的消息处理函数,执行完一个消息后则继续循环。。。
我想如果放在同一作用域里面,第一次获取数据时候第二个消息显示框没来得及去获取就默认显示s=“”了,在第一个实例里面,由于s的作用域相当于全局,所以当第二次点击按钮时候,数据把第一次获取的数据放入s里面了,以此类推,第二个消息显示框比第一个显示框里面的数据都会少获取一次数据。。。。。。
不知道大虾们是怎么理解的,我理解错误没? 有错误请指出来啊! 谢谢了哈,共同学习,爱生活爱拼搏!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值