Когда я пытаюсь получить значение из файла PHP в JavaScript - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь получить значение из php-файла, php-файл извлекает данные из ORACLE DATABASE, в скрипт js это php-файл:

<?php
include("../../config.php");

if(isset($_POST['songId'])) {
    $songId = $_POST['songId'];

    $query = oci_parse($con, "SELECT s.song_path, s.song_id, s.TITLE, r.Artist_Name, a.artworkpath FROM songs s, artists r, albums a WHERE s.artist_id = r.artist_id AND a.album_id = s.album_id  AND song_id='$songId'");
    oci_execute($query);
    $resultArray = oci_fetch_array($query);

    echo json_encode($resultArray,JSON_FORCE_OBJECT);
}
?>

работает и успешно извлекает данные из таблиц.

Сценарий, который использует данные:

<?php
$songQuery = oci_parse($con, "SELECT song_id from songs order by dbms_random.value");
oci_execute($songQuery);
$resultArray = array();

while(($row = oci_fetch_array($songQuery, OCI_BOTH)) != false) {
    array_push($resultArray, $row['SONG_ID']);
}

$jsonArray = json_encode($resultArray, JSON_FORCE_OBJECT);
?>

<script>

$(document).ready(function() {
    currentPlaylist = <?php echo $jsonArray; ?>;
    audioElement = new Audio();
    setTrack(currentPlaylist[0], currentPlaylist, false);
});


function setTrack(trackId, newPlaylist, play) {

    $.post("includes/handlers/ajax/getSongJson.php", { songId: trackId }, function(data) {

        var track = JSON.parse(data);
        $(".trackName span").text(track.TITLE);
        $(".artistName span").text(track.ARTIST_NAME);
        $(".albumLink img").attr("src", track.ARTWORKPATH);

        audioElement.setTrack(track.SONG_PATH);
        audioElement.audio.play();
    });

    if(play == true) {
        audioElement.audio.play();
    }
}

function playSong() {
    if(audioElement.audio.currentTime == 0) {
        $.post("includes/handlers/ajax/updatePlays.php", { songId: audioElement.audio.currentlyPlaying.SONG_ID});
    }

    $(".controlButton.play").hide();
    $(".controlButton.pause").show();
    audioElement.audio.play();}


function pauseSong() {
    $(".controlButton.play").show();
    $(".controlButton.pause").hide();
    audioElement.audio.pause();
}

</script>

Все функции работают хорошо, кроме

(songId: audioElement.audio.currentlyPlaying.SONG_ID) 

Он не распознает SONG_ID, который является столбцом из найденной базы данных.в файле php (ajax/getSongJson.php)

PS: файл (ajax/updatePlays.php) - это файл php, предназначенный для обновления данных (PLAYS), когда пользователь использует функцию playSong, когда текущее время = 0, поэтомуувеличить PLAY colomn в базе данных на 1

Файл php обновления

<?php
include("../../config.php");

if(isset($_POST['songId'])) {
    $songId = $_POST['songId'];

    $query = OCI_parse($con, "UPDATE songs SET plays = plays + 1 WHERE song_id='$songId'");
      oci_execute($query);
}
?>

Это файл скрипта, когда я создал аудио класс, используемый в скрипте:

var currentPlaylist = [];
var audioElement;


function Audio() {

    this.currentlyPlaying;
    this.audio = document.createElement('audio');

    this.setTrack = function(track) {
        this.currentlyPlaying = track;
        this.audio.src = track.SONG_PATH;
    }

    this.play = function() {
        this.play();
    }

    this.pause = function() {
        this.pause();
    }

}

Ошибка говорит:

Uncaught TypeError: Невозможно прочитать свойство 'SONG_ID' с неопределенным
в playSong ((индекс): 140)
в HTMLButtonElement.onclick

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