@ma4t

Ajax вывод из формы в файл, как?

Совсем не знаю php и правильность работы с Ajax.
Пытаюсь введенный гостем текст из формы отправить в отдельный файл, но никак не разберусь как правильно оформить эти данные в JS и как правильно их принять в php.
Пытался сначала задать так
var getMail = $('.form-back__window').children('form').children().first().val();
var getName = $('.form-back__window').children('form').children().first().next().next().val();
var getNumber = $('.form-back__window').children('form').children().last().prev().prev().val();
var send = "mail: " + getMail + ", Name: " + getName + ", Number: " + getNumber;

и отправить переменную send, но не разобрался можно ли в php извлечь то, что хранит она.
Дальше сделал так

var send = {
"mail": getMail,
"name": getName,
"number": getNumber
}
console.log(send);

$.ajax({
type: 'POST',
url: "../php/main.php",
dataType:'json',
data:"send2"+JSON.stringify(send),
success: function(){
$('.form-back__window').children('form').hide();
$('.form-back__window').val('Ответ получен, спасибо!');
}
});

пытался подглядеть в гугле как это обработать, получилось это

if($_POST['send2']) {
$send2 = json_decode($_POST['send2']);
$row1 = get_text($send2->mail);
$row2 = get_text($send2->name);
$row3 = get_text($send2->number);

$file = fopen ("GuestData.txt", "a");
fwrite($file, json_encode($row1));
fwrite($file, json_encode($row2));
fwrite($file, json_encode($row3));
fclose($file);
}

По идеи просто, но как пилится, хз.

Вот форма hmtl

















Прошу подсказать
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
@NonameMeTrue
Для клиентской части:

$.post('/youURL', $('form').serialize(), function (response) {
    //Code 200.
})


Лучше указать более точный селектор к нужной форме, например:

$('form#id').serialize()

На сервере проверить - пришли ли параметры(ключ = атрибут name в каждом теге input). Если есть - записать:

if(!empty($_POST['name']) && !empty($_POST['other'])) {
	$filename = 'GuestData.txt';
	$somecontent = $_POST['name']."\r\n";
	if (is_writable($filename)) {
		if (!$handle = fopen($filename, 'a')) {
			//die();
		}
		if (fwrite($handle, $somecontent) === false) {
			//die();
		}
		fclose($handle);
    //return some
	}
}


Это всего лишь пример. На серверной части укажите нужные вам параметры для полной работоспособности.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ma4t Автор вопроса
Что-то форма html не отправилась
Ответ написан
Комментировать
@Dzhanik
Go
Удобнее всего использовать FormData, который создает наборы пар ключ-значение, далее отправка методом POST.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы