jquery上下文变量

jquery上下文变量,jquery,dom,Jquery,Dom,我想了解jquery如何处理上下文。我有以下代码: var formHtml; jQuery.get("form2.htm", function (data) { formHtml = data; }); alert(formHtml); 它所做的是,它从form2.html页面获取数据,我将formHtml变量设置为该数据,以便我可以在其他地方使用它,但当我警告我未定义时。我缺少什么吗?jQuery.get()是一个异步调用。get()用于从服务器端获取值。这意味着在将请求发送到

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

var formHtml;

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

alert(formHtml);
它所做的是,它从
form2.html
页面获取数据,我将formHtml变量设置为该数据,以便我可以在其他地方使用它,但当我警告我未定义时。我缺少什么吗?

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

代表
异步JavaScript和XML

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


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

ajax
是异步的,因此警报在调用完成之前执行。

警报(formHtml)将在
formHtml=data之前执行

form2.htm
是异步加载的。您的
警报
在您传递给的回调被调用之前运行,因此
formHtml
尚未给定值。

jQuery.get()
是异步操作,您的匿名用户将在完成ajax调用后进行调用,但在ajax请求期间,您的警报显示数据,因此显示未定义的数据,正如Leeish所说,首先,获取需要一段时间才能完成。

您可以使用
.ajaxComplete()

试试这个:

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!');

您将看到“请求发送!”,然后“收到响应!”

.get
是异步的,因此在设置表单HTML之前,代码会向前移动到您的
警报。在您发出警报之前,formHtml可能不会更改。我建议您阅读?
alert(formHtml)
.get
完成之前发生。Ajax是异步的。现在我知道这不起作用了:。我在这里问了一个问题:有人提出了一个解决方案。当我尝试时,没有任何效果。是否要将值从一个窗体复制到另一个窗体?是的。特别是从“a”页上的一个表单到“b”页上的另一个表单,我无法控制“b”页。除非您将
a
页上的值存储在共享空间中,否则这是不可能的。谢谢。你心目中的共享空间是什么?我已经实现了一些代码来修改bookmarklet,我正在寻找其他的可能性。
jQuery.get("form2.htm", function (data) {
    formHtml = data;
    alert('response received!');
});
alert('request send!');