我有这段代码:
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"返回为"undefined",但是当我用Firebug调试时,我看到请求响应是"true"或"false"。该值作为纯字符串从请求返回,而不是特定格式(JSON, HTML,…)
为什么"returnVal"不返回请求的响应值?由于
因为您在ajax调用之外使用它,并且由于ajax调用是异步的,因此警报弹出的速度比您获得响应的速度要快。您必须在success
处理程序中使用returnVal
变量,以确保获得响应返回的值。