为什么$ .ajax({url:" xxx"})。responseText返回undefined?

时间:2014-07-06 07:15:28

标签: javascript jquery

为什么$.ajax({url:"xxx"}).responseText会返回undefined? 但是,如果我使用a=$.ajax({url:"xxx"}), a.responseText返回正确的结果。

谢谢!

2 个答案:

答案 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以澄清事情。