Задать вопрос
@moskwin68

Как записать в файл данные формы?

Пытаюсь отправить данные формы ajax'ом и записать в json-файл. Файл успешно создается в нужной директории, но его содержание - Null
Форма:
<form id="plgen">
	<label for="name">ID плейлиста:</label>
	<input  required="required" type="text"  value="" name="playlistslug" id="playlistslug"  size="80"  /><br/>
	<label for="title">Заголовок плейлиста:</label>
	<input  required="required" type="text"  value="" name="pl-title"  size="80"  />
		<fieldset>
			<label for="goal">Событие:</label>
			<input name="goal[]" id="goal" value="" type="text" />
			<label for="ytid">YouTube ID:</label>
			<input name="ytid[]" id="ytid" value="" type="text" />
		</fieldset>
	<div class="submit">
		<input type="submit" id="btn" name="btn" class="btn" value="Submit" />
	</div> 
</form>

JavaScript:
$(document).ready(function() {
  $("#btn").click(function(e){
    var jsonData = {};
	 
   var formData = $("#plgen").serializeArray();
  // console.log(formData);
   
   $.each(formData, function() {
        if (jsonData[this.name]) {
           if (!jsonData[this.name].push) {
               jsonData[this.name] = [jsonData[this.name]];
           }
           jsonData[this.name].push(this.value || '');
        } else {
           jsonData[this.name] = this.value || '';
        }   
   });
   console.log(jsonData);
	$.ajax(
	{
		url : "/playlists/new-playlist.php",
		type: "POST",
		data : jsonData,
	});
    e.preventDefault();	
 });
});

Обработчик:
$json = $_POST['data']; //json need to be data
    $info = json_encode($json);
    $file = fopen('test.json','w+') or die("File not found");
    fwrite($file, $info);
    fclose($file);
	exit;

В консоль выводит:
Object { 
 playlistslug: "Playlist title", 
 "pl-title": "Заголовок", 
 "goal[]": "Событие 1'", 
 "ytid[]": "youtubevideoid" 
}
  • Вопрос задан
  • 167 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
uaf0x
@uaf0x
Всего понемногу
В обработчик напиши:
Вместо
$json = $_POST['data']; //json need to be data
    $info = json_encode($json);
    $file = fopen('test.json','w+') or die("File not found");
    fwrite($file, $info);
    fclose($file);
  exit;

Вот это
file_put_contents('test.json', json_encode($_POST['data']));
  exit;


Тебе нужно массив преобразовать в json обьект и эту строку записать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 16:42
2000 руб./за проект
18 дек. 2024, в 16:33
2000 руб./в час
18 дек. 2024, в 16:06
5000 руб./за проект