0

Ну, в общем, у меня есть что-то вроде видеохоста и я с помощью ajax хочу передать JS JSON из PHP. Но выходит какая-то дичь:

var video_json;
$.ajax({
    url: 'libs/scripts/seen.php',
    type: 'post',
    data: {get_videos: true},
    success: function(data) {
        console.log(JSON.parse(data)); // Выводит массив
        video_json = JSON.parse(data);
    },
    error: function(err) {
        console.error(err);
    }
});
console.log(video_json); // undefined

Подскажите, правильно ли я вообще задумал так это делать, у меня всё работало и через PHP успешно, но я решил переписать на AJAX, что бы много чего обрабатывать на JS, а не PHP. И приведу PHP на всякий случай.

$query = mysqli_query($connect, 'SELECT * FROM `files`;');
$video_array = array();
while ($row = mysqli_fetch_row($query)) {
    array_push($video_array, $row);
}
echo json_encode($video_array);
Rubinium
  • 11
  • 2

1 Answers1

1

Похоже, т.к у AJAX есть задержка, он сначала обрабатывает последний console.log, а затем AJAX, т.к console.log ещё не получил массив, выводит undefined, а ajax обработал и получил ответ, вывел массив, правил код.

var video_json;
$.ajax({
    url: 'libs/scripts/seen.php',
    type: 'post',
    data: {get_videos: true},
    success: function(data) {
        video_json = JSON.parse(data);
        video_show();
    },
    error: function(err) {
        console.error(err);
    }
});

function video_show() {
    console.log(video_json);
}

Помогло

Rubinium
  • 11
  • 2