Dow*_*own 17 javascript ajax jquery
我有以下代码
var test;
$.ajax({
type: "GET",
url: "../views/person/controller.php?actor=person&action=checkAge",
data: "age=" + value,
success: function(msg){
console.log(msg);
test = msg;
},
});
Validate.fail(test);
Run Code Online (Sandbox Code Playgroud)
现在测试变量应该像控制台所说的那样给出错误.但测试变量给了我不明确的原因?
Joh*_*hnP 24
var test; <-- (1) This code runs first
$.ajax({ <-- (2) Then this runs
type: "GET",
url: "../views/person/controller.php?actor=person&action=checkAge",
data: "age=" + value,
success: function(msg){
console.log(msg); <-- (4) Finally this is run. IF your request is a success
test = msg;
},
});
Validate.fail(test); <-- (3) This runs third
Run Code Online (Sandbox Code Playgroud)
查看代码运行的顺序.您的变量在那时根本不可用,因为它在通过回调触发代码时运行
map*_*aft 21
可能是因为Validate.fail(test)在异步调用之后立即发生.请记住它是ASYNCHRONOUS,意味着它与您页面上运行的javascript并行执行.
小智 8
enter code here var test;
$.ajax({
type: "GET",
async: false,
url: "../views/person/controller.php?actor=person&action=checkAge",
data: "age=" + value,
success: function(msg){
console.log(msg);
test = msg;
},
});
Validate.fail(test);
Run Code Online (Sandbox Code Playgroud)
//使你的ajax函数同步,设置json参数"async:false",所以javascript必须等到测试被赋值.