javascript ajax返回值“;“被盗”;在浏览器控制台中
我在浏览器中执行了以下javascript代码:javascript ajax返回值“;“被盗”;在浏览器控制台中,javascript,jquery,ajax,browser,Javascript,Jquery,Ajax,Browser,我在浏览器中执行了以下javascript代码: function run(request) { var res; $.ajax({ url:'http://custom-host:8080/', type: "POST", async: false, data: request }).done(function(data, textStatus, jqXHR){ console.log(textStatus);
function run(request) {
var res;
$.ajax({
url:'http://custom-host:8080/',
type: "POST",
async: false,
data: request
}).done(function(data, textStatus, jqXHR){
console.log(textStatus);
res = data;
});
return res;
}
它只是向我的定制服务器请求它得到的响应。Chrome控制台日志如下所示:
> var a = run({command:'version'}); // executing custom function
success dev.pycached-admin/:14 // this is the console log
undefined // this is the console returned value
> a // ask for value a
"1.1" // value a (returned from ajax)
问题是:当“1.1”的实际值随后返回(该值已正确分配)时,控制台中如何返回undefined
如果在done函数中添加调试器语句:
}).done(function(data, textStatus, jqXHR){
console.log(textStatus);
debugger;
res = data;
});
然后我可以看到苹果的代码,它可能维护着chrome控制台(VM
脚本选项卡中的文件)。无论如何,AJAX调用是同步的,那么为什么第一次没有返回值呢
…那么为什么第一次没有返回值呢
它是,但是var
是一个语句,而不是一个表达式,因此它不能有控制台显示的结果。只要这样做,您就可以看到:
> var a = "foo";
undefined
> a
"foo"
> var a
undefined
> a = run({command:'version'});
>var a=“foo”;
未定义
>a
“福”
那么就这么做吧:
> var a = "foo";
undefined
> a
"foo"
> var a
undefined
> a = run({command:'version'});
>变量a
未定义
>a=run({command:'version});
…这应该给你:
success dev.pycached-admin/:14 // this is the console log
"1.1"
success dev.pycached-admin/:14//这是控制台日志
“1.1”是的,您完全正确:var x//undefined//x=run({command:'version});//success dev.pycached-admin/:14/“1.1”