jquery上下文变量
我想了解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()用于从服务器端获取值。这意味着在将请求发送到
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!');