jquery上下文变量

时间:2013-02-07 17:09:00

标签: jquery dom

我想了解jquery如何处理上下文。我有这段代码:

var formHtml;

jQuery.get("form2.htm", function (data) {
    formHtml = data;
});

alert(formHtml);

它做了什么,它从form2.html页面获取数据,我将formHtml变量设置为该数据,以便我可以在其他地方使用它,但是当我提醒我未定义时。有什么我想念的吗?

7 个答案:

答案 0 :(得分:4)

ajax是异步的,因此警报在呼叫完成之前执行

答案 1 :(得分:2)

jQuery.get()是异步调用。 jQuery.get()使用AJAX从服务器端获取值。这意味着在将请求发送到服务器之后,javascript语句的执行将继续,而无需等待服务器的响应。

AJAX代表Asynchronous JavaScript and XML

当服务器的响应返回时,将调用使用post方法注册的回调方法。

因此,当服务器请求返回时,alert语句已经执行。由于您已声明全局变量formHtml而未对其进行初始化,因此其值为undefined,这是您在警报中获得的内容。

答案 2 :(得分:1)

alert(formHtml);将在formHtml = data;

之前执行

答案 3 :(得分:1)

Leeish所说 - > Well for one, the get will take a moment to complete.

您可以使用.ajaxComplete()

$(document).ajaxComplete(function(){
   alert(formHtml);
});

答案 4 :(得分:1)

试试这个:

var formHtml;

jQuery.get("form2.htm", function (data) {
    formHtml = data;
    alert(formHtml);
});

如前所述,jQuery.get是一种异步方法。收到响应后,将在稍后执行回调函数。

jQuery.get("form2.htm", function (data) {
    formHtml = data;
    alert('response received!');
});
alert('request send!');

您会看到'请求发送!',然后'收到回复!'。

答案 5 :(得分:0)

form2.htm是异步加载的。您传递给get的回调之前运行的alert会被调用,因此formHtml尚未获得值。

答案 6 :(得分:0)

jQuery.get()是异步操作,您的匿名将在完成ajax调用后调用但在ajax请求期间,您的警报显示数据,因此它显示未定义