我想了解jquery如何处理上下文。我有这段代码:
var formHtml;
jQuery.get("form2.htm", function (data) {
formHtml = data;
});
alert(formHtml);
它做了什么,它从form2.html
页面获取数据,我将formHtml变量设置为该数据,以便我可以在其他地方使用它,但是当我提醒我未定义时。有什么我想念的吗?
答案 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请求期间,您的警报显示数据,因此它显示未定义