有关ajax success函数的问题

chenzhg33 发布于 2013/12/26 21:58
阅读 731
收藏 3

$("#getCommentBtn").click(function() {
	var comments;
	$.ajax({
		type: "get",
		url: "/comments",
		success: function(msg) {
			comments = msg;
		}
	});
	alert(comments);
});



如上图所示,点击button后为什么comments的值是 undefined ?

加载中
0
迷路的游侠
迷路的游侠
alert执行会先于success里的赋值,因为ajax是异步的啊
chenzhg33
chenzhg33
@迷路的游侠 嗯呢。懂了。。谢谢
迷路的游侠
迷路的游侠
回复 @chenzhg33 : 是的,所以你alert(conmments)写到success里面就可以了。一般那些需要得到请求结果后才能执行的动作都写到success里面。
chenzhg33
chenzhg33
也就是说$.ajax{}的执行不会影响后面js代码代码的执行,执行ajax时的时候也在执行后面的js代码么?
0
黑帽子
黑帽子
加async=true,同步
黑帽子
黑帽子
回复 @ddatsh : 哈。。不好意思啊,太久没用,都忘了。。差点误导别人。。
ddatsh
ddatsh
这个是异步
0
mynacche
mynacche
先学js基础,别一上来就jquery
chenzhg33
chenzhg33
我觉得两者相差不是很大啊。js也学了,但是没怎么用
0
淘淘我的小宝宝
淘淘我的小宝宝
.ajax执行不阻塞后面alert的执行,所以你看到的是未定义的值。异步模式下事件通过回调来响应,而不会阻塞用户操作。要顺序等待执行设置为.ajax要设置成同步模式。
chenzhg33
chenzhg33
恩恩
0
OSC首席键客
OSC首席键客
LZ搞清楚来!ajax默认是异步,你就明白为什么会出现你这种情况了。
chenzhg33
chenzhg33
额额。懂了额,谢谢
0
liu563813130
chenzhg33
chenzhg33
谢谢额
0
梅开源
梅开源
打个比喻说,你现在和小明说,要是一会谁给我打电话把他们电话记录下来给我。然后马上又说,现在谁打电话给我了?——当然是undefined,还没人打呢。
0
vincent1988
vincent1988

 alert(comments);这个放success里就ok了


chenzhg33
chenzhg33
谢谢
0
Jacle
Jacle
异步
chenzhg33
chenzhg33
谢谢
返回顶部
顶部