我的jquery中的变量出现问题,请按照以下代码进行操作:
var resp;
if(itcode != ""){
resp = $.ajax(
{url: url_rq}
);
resp.done(function () { alert(resp.responseText); });
}
如果我把上面的“resp.responseText”打印出响应,但如果我尝试这段代码:
var resp;
if(itcode != ""){
resp = $.ajax(
{url: url_rq}
);
}
alert(resp.responseText);
打印“未定义”,我的“resp”变量发生了什么?
答案 0 :(得分:2)
您的Ajax示例是异步的,因此您需要使用回调函数(如第一个示例中所示)来获取结果并执行某些操作。在第二个示例中,您没有使用回调函数,因此在Ajax调用返回之前会触发警报。
答案 1 :(得分:1)
在你的第二个代码中,当它打印变量时,ajax请求仍在运行中,你不应该像那样编码,只跟随第一个样本,因为ajax是异步的
答案 2 :(得分:0)
由于$.ajax
是异步的,它会在alert()
出现后完成执行,因此基本上在警报的上下文中,resp变量为undefined
,因为它尚未处理但是通过ajax请求。
答案 3 :(得分:0)
我认为区别在于你打电话时
resp.done(function () { alert(resp.responseText); });
它等待ajax返回一个答案然后打印变量。
如果您更改了那条外线,那么两者都将被定义为未定义。
问题是你总是需要为ajax调用定义一个回调来开始使用它的返回值。 Javascript是异步的,不会等到请求结束。