Используйте JavaScript для записи данных в текстовый файл - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над проектом, чтобы пользователи закончили видео. Я хотел бы, чтобы он просто добавил что-то вроде «пользователь закончил видео» в уже существующий текстовый файл. Вот что у меня есть в моем файле JavaScript.

    var video = document.getElementById("video");

var timeStarted = -1;
var timePlayed = 0;
var duration = 0;
// If video metadata is laoded get duration
if (video.readyState > 0)
getDuration.call(video);
//If metadata not loaded, use event to get it
else {
video.addEventListener('loadedmetadata', getDuration);
}
// remember time user started the video
function videoStartedPlaying() {
timeStarted = new Date().getTime() / 1000;
 }

function videoStoppedPlaying(event) {
// Start time less then zero means stop event was fired vidout start event
if (timeStarted > 0) {
    var playedFor = new Date().getTime() / 1000 - timeStarted;
    timeStarted = -1;
    // add the new ammount of seconds played
    timePlayed += playedFor;
}
document.getElementById("played").innerHTML = Math.round(timePlayed) + "";
// Count as complete only if end of video was reached
if (timePlayed >= duration && event.type == "ended") {
    document.getElementById("status").className = "complete";
}
}

function getDuration() {
duration = video.duration;
document.getElementById("duration").appendChild(new Text(Math.round(duration) + ""));
console.log("Duration: ", duration);
}

video.addEventListener("play", videoStartedPlaying);
video.addEventListener("playing", videoStartedPlaying);

video.addEventListener("ended", videoStoppedPlaying);
video.addEventListener("pause", videoStoppedPlaying);



var data = "This user has finished the video";
var url = "data.php";
var http = new XMLHttpRequest();
http.open("POST", url, true);

//sends hearder info along with the request
http.setRequestHeader("content-type", "application/x-www-form-urlencoded");

http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
    alert(http.responseText);

}
}
http.send(data);

и Data.php имеет

    <?php
    $data = $_POST['data'];
    $file = fopen('names.txt', 'a');
    fwrite($file, $data);
    fclose($file);
    ?>

На данный момент в консоли нет ошибок, но она не записывает данные в текстовый файл.

Пожалуйста, дайте мне знать, что я делаю не так

1 Ответ

0 голосов
/ 12 ноября 2018

Поскольку вы используете http.setRequestHeader("content-type", "application/x-www-form-urlencoded");, запрос ожидает, что data будет отформатирован как данные сериализованной формы HTML.Измените следующую строку, чтобы указать data в правильном формате:

var data = "data=This%20user%20has%20finished%20the%20video";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...