我使用回调选项来获取成功块之外的值(跨域调用)。我在回调函数中获取值,但不在外部。请参阅以下代码。此外,如果该值仅在回调函数内可用,那么在成功块之外编写代码的区别是什么。
var globalVar ;
function callbackClick() {
var jsonData = { "name": "Alex" };
test("http://mydomain:84/AuthService.svc/TestAsyncGet", jsonData, callback);
}
var callback = function (data, textStatus, xhr) {
globalVar = data;
alert(data + "\t" + textStatus); //here I am getting data
}
var test = function (url, jsonData, cb) {
$.support.cors = true;
$.ajax({
url: url,
type: "GET",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
processdata: true,
success: cb,
error: function error(response) {
alert("Network error");
},
complete: function (msg) {
}
});
alert("GLOBAL " + globalVar); //here i am not getting the value
}
还有一个: - 即使我没有使用回调函数,成功块内的代码也会在$ .ajax之外的alert语句之前执行,那么为什么我没有获得该值?
感谢
答案 0 :(得分:0)
在xmlhttprequest开始之后执行$ .ajax()指令之后的警报但是在它结束之前,即在调用成功函数之前执行。因此,当时,globalVar仍未定义。