gpt4 book ai didi

javascript - jQuery AJAX。返回值未定义?

转载 作者:行者123 更新时间:2023-11-28 11:40:01 25 4
gpt4 key购买 nike

我有该代码:

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);

知道哪里出了问题吗?

最佳答案

$.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 调用已经返回)。这引入了其他复杂性,例如同步和错误处理,并且可能使您的程序流程相当不可靠。

关于javascript - jQuery AJAX。返回值未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com