JQuery变量问题

时间:2012-03-19 14:22:28

标签: ajax jquery

我的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”变量发生了什么?

4 个答案:

答案 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是异步的,不会等到请求结束。