jQuery AJAX。返回值不确定吗?
2023-05-03 15:19
该$.ajax()
调用只是启动ajax操作。然后,代码进入您的console.log
语句,但ajax调用尚未返回。因此,s
尚未设定的值。
稍后,ajax调用将返回您的结果,并在那时触发您的回调。因此,如果要引用返回的值,则应s
在回调内部引用变量。
更好的方法通常是这样的:
$.ajax(
{
type: "POST",
url: ajaxurl,
data: {action: "get_info"},
success: function(r)
{
s = r.s;
// Do something with s here...
}
}
);
如果确实需要,则可以s
在回调之外进行引用,但如果需要,则需要放置某种机制以确保s
已初始化(即,您的ajax调用已返回)。这引入了其他复杂性,例如同步和错误处理,并且可能使程序流程变得不可靠。
我有该代码:
var s,d,p = '';
$.ajax(
{
type: "POST",url: ajaxurl,data: {action: "get_info"},success: function(r)
{
// r contain that json data
// {"s":"long-string","d":"string","p":"string"}
// That served from the server with that header
//
// header('Cache-Control: no-cache,must-revalidate');
// header('Expires: Mon,26 Jul 1997 05:00:00 GMT');
// header('Content-type: application/json');
d = r.d;
s = r.s;
p = r.p;
}
}
);
// And here console return s as undefined
console.log(s);
有什么问题的想法吗?
上一篇:路由器互联网连接什么意思 下一篇:第二个路由器连接视频