Как извлечь данные из базы данных в файл JavaScript и сохранить его в массиве? - PullRequest
0 голосов
/ 30 апреля 2019

Я создаю приложение конвертера валют для своего школьного проекта и в данный момент пытаюсь получить данные из базы данных в файл .js. Точная цель - получить данные из базы данных и сохранить их в массив в файле .js.

Насколько я знаю, нет способа получить данные из базы данных непосредственно в файл JavaScript, поэтому я пытаюсь использовать комбинацию JQuery и PHP, как указано в этой теме .

У меня есть база данных с именем 'currencies', которая имеет шесть столбцов: id, basecur1, basecur2, basecur3, basecur4, basecur5. Поле id предназначено для идентификатора пользователя, а поля basecur_ предназначены для хранения предпочитаемых пользователем валют и могут содержать только три символа кода валюты (например, USD или GBP) или быть пустыми. Мне нужно получить результат, похожий на const array_name = ["EUR", "GBP", "USD"];

Обратите внимание , что я использую PHP-инфраструктуру CodeIgniter для бэк-энда.

В этом файле 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");

Любая помощь будет высоко ценится.

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

Из-за этих строк у вас уже есть допустимая строка json:

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

и, поскольку вы уже установили dataType: 'json', jquery будет анализировать результат как строку json независимо от заголовка.

Таким образом:

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

Вы можете отлаживать, используя console.log, это ценный инструмент для обучения и проверки того, что вы получаете то, что вы хотите, в различных точках вашего кода.Как предложил другой пользователь, убедитесь, что вы не получаете никаких 404 ошибок в консоли.query.php не похож на действительный маршрут CodeIgniter.

0 голосов
/ 30 апреля 2019

В вашем php файле.

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

в вашей функции ajax

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

посмотрим, что вы получаете

0 голосов
/ 30 апреля 2019

Я думаю, что вы не передаете действительный 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;

Обновление: попробуйте вывести переменную напрямую, как предложил Алекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...