gpt4 book ai didi

javascript - 变量范围

转载 作者:行者123 更新时间:2023-12-02 16:31:20 25 4
gpt4 key购买 nike

这是一个愚蠢的问题,但我试图在ajax范围之外使用var form_data中的内容。我该怎么做呢?即使在 ajax 范围之外声明变量之后,form_data 似乎也只存在于 ajax 函数内部而不是外部。我认为变量会冒泡,直到找到未定义 var 时声明它的位置。

为了澄清我的问题,如何在成功函数之外使用服务器的结果?我不想限制自己在 ajax 成功回调中执行所有操作。

$(function () {

var form_data;

$.ajax({
type: 'GET',
url: 'print_form.php',
data: {
//data sent to server
},
success: function (response) {
form_data = JSON.parse(response);
console.log(form_data); //object is printed out as expected
},

error: function () {
alert('AJAX failed for print_form');
}
});

console.log(form_data); //undefined

});

最佳答案

由于 AJAX 代表异步 Javascript 和 Xml,因此您的代码不会因执行 ajax 操作而被阻止,因为它是异步的。在您的情况下,当您通过ajax获取数据时,您的javascript不会停止继续执行并等待请求成功。相反,当您获取数据时,其余代码仍然会被执行。这就是为什么在通过 ajax 请求从服务器获取数据之前,form_data 已经在 ajax 请求范围之外打印了。

让我们测试一下:

尝试使用任意值初始化form_data。您会发现现在在打印值的ajax之外不会出现未定义的情况。相反,您将获得初始化变量所用的值。

关于javascript - 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271616/

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