2011-07-08 105 views
0

里面我有这样一段代码:JQuery的:Ajax请求返回值“未定义”相同的功能

function CallAPI(paramString) { 
    var returnVal; 
    var jqxhr = $.get(
     "http://url/../" 
    ) 
    .success(function (data) { returnVal = data; }) 
    .error(function (xhr, ajaxOptions, thrownError) { alert("Error!\n xhr.status = [" + xhr.status + "]\n xhr.statusText: [" + xhr.statusText + "]\najaxOptions = [" + ajaxOptions + "]"); }) 
    .complete(function() { alert("Request complete."); }); 

    alert("returnVal: [" + returnVal+ "]"); 
} 

在最后警报的“returnVal”返回为“不确定”,但是当我使用Firebug调试,我看到请求响应是“真”还是“假”。该值是从请求发回的纯字符串,而不是特定的格式(JSON,HTML,..)

为什么“returnVal”不返回请求的响应值? 谢谢

回答

1

因为您在ajax调用之外使用它,并且由于ajax调用是异步的,所以警报弹出速度比获得响应的速度快。您必须使用success处理程序中的returnVal变量,以确保获得响应返回的值。

+0

是不是我所拥有的?:.success(函数(数据){returnVal = data;}) – user706058

+0

移动处理程序中的警报呼叫,你会得到我的意思:) – devnull

+0

啊好的,谢谢: ) – user706058