0

我正在为我的学校项目构建一个货币转换器应用程序,目前我正在尝试将数据从数据库中获取到.js文件中。确切的目标是从数据库中获取数据并将其保存到文件中的数组中.js

据我所知,无法将数据库中的数据直接获取到 JavaScript 文件中,因此我正在尝试使用该线程中指出的 JQuery 和 PHP 组合。

我有一个名为的数据库'currencies',它有六列:id, basecur1, basecur2, basecur3, basecur4, basecur5. id字段用于用户ID,basecur_字段用于存储用户的首选货币,并且只能包含货币代码的三个字符(如USDGBP)或为空。我需要得到一个看起来像的结果 const array_name = ["EUR", "GBP", "USD"];

请注意,我使用 CodeIgniter PHP 框架作为后端。

在这个文件query.php中,我试图从从数据库中获取的数据创建一个数组并回显它:

<?php
$current_user = $this->session->user_id; 

$query = $this->db->get_where('currencies', array('id' => $current_user));
$row1 = $query->row();
$base_currencies = array($row1->basecur1, $row1->basecur2, $row1->basecur3, $row1->basecur4, $row1->basecur5);

$post_data = json_encode($base_currencies);
echo $post_data;
?>

不幸的是,我对 JavaScript 没有深入的了解,所以我不能真正说出这段 JS 代码有什么问题,它取自上面提到的线程,但它并不适合我:

jQuery.extend({
getValues: function(url) {
    var result = null;
    $.ajax({
        url: url,
        type: 'get',
        dataType: 'json',
        async: false,
        success: function(data) {
            result = JSON.stringify(data);
        }
    });
   return result;
}
});

var array_name = $.getValues("query.php");

任何帮助都感激不尽。

4

3 回答 3

1

由于这些行,您已经有了一个有效的 json 字符串:

$post_data = json_encode($base_currencies);
echo $post_data;
exit;

并且由于您已经设置了dataType: 'json'jquery,因此无论标题如何,jquery 都会将结果解析为 json 字符串。

因此:

success: function(data) {
        result = data;
    }

您可以使用它进行调试,console.log它是一种有价值的学习工具,可确保您在代码的各个点都获得所需的内容。正如另一位用户建议的那样,确保您没有在控制台中收到任何 404 错误。query.php看起来不像是有效的 CodeIgniter 路由。

于 2019-04-30T00:58:40.810 回答
0

在你的 php 文件中。

header('Content-Type: application/json');

在你的 ajax 函数中

success: function(response){
console.log(resposne)
}

看看你有没有得到什么

于 2019-04-29T23:08:25.453 回答
0

我认为你没有传递一个有效的 url 尝试添加一个错误函数来获取一些信息:

var result = null;
$.ajax({
    url: url,
    type: 'get',
    dataType: 'json',
    async: false,
    success: function(data) {
        result = data
    },
    error: function(error) {
        alert(error);
    }
});
return result;

更新:尝试按照亚历克斯的建议直接输出变量

于 2019-04-29T22:14:56.957 回答