为什么$.ajax({url:"xxx"}).responseText
会返回undefined
?
但是,如果我使用a=$.ajax({url:"xxx"}), a.responseText
返回正确的结果。
谢谢!
答案 0 :(得分:3)
这是一种竞争条件(某种程度)。
由于AJAX是异步的,因此它在后台运行。当你这样做时:
$.ajax({url:"xxx"}).responseText
您提取responseText
的速度太快了。当您将其传递给某个值时,ajax会设法完成调用,responseText
会有一个值。
如果安装AJAX debugger之类的东西,将AJAX请求记录到控制台中,就可以真正看到它。然后,您会在完成ajax调用之前看到您正在获取undefined
响应。你也可以设置async: false
,看看同步调用是否有效(但不要这样做,它有点无视AJAX)。
请注意,即使是第二个示例也可以(有时)返回未定义的值 - 较大的网站需要更长的时间才能返回响应,因此您无法真正依赖它。这样做的正确方法就是在ajax complete event内运行所需的逻辑(甚至更好 - success
事件)
答案 1 :(得分:0)
您的通话是异步的。您需要使用分配给成功的函数来使用响应。请阅读docs以澄清事情。