Доброй ночи.
Делаю форму обратной связи для сайта. Необходимо передавать post запрос без перезагрузки страницы. Не могу нормально передать данные из формы в php.. Прошу не стрелять! Помогите пожалуйста, я уже второй день мучаюсь, кучу вариантов испробовал. Файлы подключаются нормально - везде код 200. Тестирую в Хроме, при отправке формы в Console пишет:
Uncaught SyntaxError: Unexpected end of JSON input
at Function.parse [as parseJSON] (<anonymous>)
at Object.success (ajax.js:17)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
ajax.js$( document ).ready(function() {
$("#sub").click(
function(){
sendAjaxForm('result', 'contact', "mail/send.php");
return false;
}
);
});
function sendAjaxForm(result_form, ajax_form, url) {
jQuery.ajax({
url: url, //url страницы (action_ajax_form.php)
type: "POST", //метод отправки
dataType: "html", //формат данных
data: jQuery("#"+ajax_form).serialize(), // Сеарилизуем объект
success: function(response) { //Данные отправлены успешно
result = jQuery.parseJSON(response);
document.getElementById(result_form).innerHTML = "Имя: "+result.name+"<br>Email: "+result.email;
},
error: function(response) { // Данные не отправлены
document.getElementById(result_form).innerHTML = "Ошибка. Данные не отправленны.";
}
});
}
send.php<?php
if (isset($_POST["name"]) && isset($_POST["email"]) ) {
// Формируем массив для JSON ответа
$result = array(
'name' => $_POST["name"],
'email' => $_POST["email"]
);
// Переводим массив в JSON
return json_encode($result);
}
?>
index.html<div class="row">
<form id="contact" name="contact" action="" class="contact-form">
<fieldset class="col-md-4 col-sm-6">
<input type="text" id="name" name="name" placeholder="Имя...">
</fieldset>
<fieldset class="col-md-4 col-sm-6">
<input type="email" id="email" name="email" placeholder="Email...">
</fieldset>
<fieldset class="col-md-4 col-sm-12">
<input type="text" id="subject" name="subject" placeholder="Тема...">
</fieldset>
<fieldset class="col-md-12 col-sm-12">
<textarea name="message" id="message" cols="30" rows="6" placeholder="Сообщение..."></textarea>
</fieldset>
<fieldset class="col-md-12 col-sm-12">
<div id="result">
<input type="submit" id ="sub" class="button big default" value="Отправить">
</div>
</fieldset>
</form>
</div>
Привел только html формы, чтобы места много не занимать.