gpt4 book ai didi

javascript - 如何使用 AJAX 和 JSON 将 SQL 结果存储在 JavaScript 数组中

转载 作者:行者123 更新时间:2023-12-03 11:56:46 25 4
gpt4 key购买 nike

我想使用 JavaScript 将 SQL 数据库中的表动态检索到数组中。

如果我对数组使用全局 JavaScript 变量,下面的代码可以正常工作。但我想传递要动态存储数据的数组。这就是问题开始的地方。

我的来源:

var getSQL = function (query, array, callback) {
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
callback(req.responseText, array);
}
};
var param = "?q=" + encodeURIComponent(query);
req.open("GET", "sql.php" + param, true);
req.send();
}
function mycallback (json_expr, t_array) {
t_array = JSON.parse(json_expr);
}

我想要存储该请求结果的自定义数组称为 my_data:

var my_data = [];
getSQL('SELECT * FROM users ORDER BY id', my_data, mycallback);

// wait some time

// then this code gets called via an onclick event
alert(my_data[0]['name']);

结果是未定义。为什么?

最佳答案

这不起作用,因为更改 mycallbackt_array 的值只会更改函数范围内 t_array 的值,它不会更改传递给它的值。

如果你想使用这个结构,你应该修改t_array,所以:

t_array.result = JSON.parse(json_expr);

然后你就可以阅读了

alert(my_data.result[0]['name']);

但更常见的是提供回调函数而不是数组,如下所示:

var getSQL = function (query, callback) {
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
callback(req.responseText);
}
};
var param = "?q=" + encodeURIComponent(query);
req.open("GET", "sql.php" + param, true);
req.send();
}

然后按如下方式调用:

var my_data = [];
getSQL('SELECT * FROM users ORDER BY id', function(json_expr){
my_data = JSON.parse(json_expr);
});

...

alert(my_data[0]['name']);

由于 javascript 函数闭包的工作原理,回调函数将能够更改 my_data var 的值。

关于javascript - 如何使用 AJAX 和 JSON 将 SQL 结果存储在 JavaScript 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583976/

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