Редактировать: Обновить - Решение
Итак, я достиг того, что мне нужно было сделать: записать данные в файл на сервере.Я не совсем уверен, как все работает, но кажется, что:
xhttp.send(data);
не отправляет все данные в переменную FormData, а скорее только данные с «ключом» «данные».(Извините, если у меня неправильная терминология.) Итак, я взял свой объект "userData" и применил следующее:
userStringData = JSON.stringify(userData);
Затем я поместил userStringData в переменную FormData следующим образом:
var data = new FormData();
data.append("data" , userStringData);
Затем успешно записывается в файл на сервере.В файле у меня были только userStringData, а не «ключ» «данные».
В моем PHP-файле я также включал новую строку после каждой записи, чтобы данные каждой пользовательской строки были в новой строке:
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "users.txt";
$file = fopen("./AJG_Data/".$fname, 'a');
fwrite($file, $data);
fwrite($file, "\r\n");
fclose($file);
Так что теперь это работает для меня.Спасибо тем, кто предложил совет и помощь.
Редактирование: Обновление:
Цель: записать данные на сервер, используя AJAX и PHP.(При необходимости обратитесь к первоначальному вопросу ниже)
Благодаря комментариям ADyson я добился большого прогресса.Я узнал, что XMHHttprequest - это способ сделать AJAX-запрос к серверу.У меня есть этот код:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
let successString = `Thank you ${userData.athlete.firstname} you have successfully granted permission to read your data.`
document.querySelector("#message-0").innerHTML = successString;
}
};
xhttp.open("POST","/path_to_my_php_file/file_write.php", true);
xhttp.send(data);
}
На стороне сервера у меня есть это в моем php-файле:
<?php
$dir = 'AJG_Data';
// create new directory with 744 permissions if it does not exist yet
// owner will be the user/group the PHP script is run under
if ( !file_exists($dir) ) {
mkdir ($dir, 0744);
}
file_put_contents ($dir.'/test1.txt', 'Hello File');
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "users.txt";
$file = fopen("./AJG_Data/".$fname, 'w');
fwrite($file, $data);
fclose($file);
}
?>
Раздел создания каталога выше не является необходимым, это было частью моей устранения неполадок.
Вышеописанное прекрасно работает, если я отправляю простые данные FormData, созданные следующим образом:
var data = new FormData();
data.append("data" , "the_text_you_want_to_save");
Проблема, с которой я сталкиваюсь, заключается в том, что при попытке отправить более сложные данные FormData.Не работаетОн не распознает мои FormData и не может пройти мимо этого оператора if:
if(!empty($_POST['data']))
Я проверил свои FormData, используя этот код:
for (var pair of data.entries()) {
console.log(pair[0]+ ', ' + pair[1]);
}
Приведенный выше код возвращаетследующее:
token_type, Bearer
expires_at, 12345678910
expires_in, 1234
refresh_token, 1234567890abcefg...
access_token, 1234567890abcdefg...
athlete[id], 1234567
athlete[username], joe_soap
athelete[resouce_state], 2
athlete[firstname], Joe
...
...
athelete[created_at], 2017,01-03T16:07:37Z
...
...
athlete[profile], https://some.web.address/larg.jpg
Итак, насколько я могу судить, у меня есть хорошие FormData, но на стороне сервера ничего не пишется.
Как я могу это исправить?
Спасибо.
Оригинальный вопрос следует ниже.
Я успешно получил данные из API Strava, используя код JavaScript.У меня есть данные, хранящиеся в переменной как объект JavaScript.Я хочу записать данные в файл на сервере.
Я потратил часы на поиск в Интернете и не могу найти решение.Кажется, что это возможно при использовании ajax или jQuery, но я не могу найти простое пошаговое объяснение того, как это сделать.
Итог: я хочу простой способ записать данные в файл на сервере, используя JavaScript или что-то связанное с JavaScript, которое легко и быстро реализовать.Предполагая, что я могу успешно записать в файл, я позже захочу прочитать из файла.