@samnebudu
Человек

Как правильно обработать данные отправленные через ajax?

У меня есть ajax скрипт, который отправляет данные из формы
$( document ).ready(function() {
    $("#btn").click(
		function(){
			sendAjaxForm('result_form', 'ajax_form', 'php/signup.php');
			return false; 
		}
	);
});
 
function sendAjaxForm(result_form, ajax_form, url) {
    $.ajax({
        url:     url, 
        type:     "POST", //метод отправки
        dataType: "html", //формат данных
        data: $("#"+ajax_form).serialize(),  // Сеарилизуем объект
        success: function(response) { //Данные отправлены успешно
        	result = $.parseJSON(response);
        	$('#result_form').html('Имя: '+result.email+'<br>Телефон: '+result.password);
    	},
    	error: function(response) { // Данные не отправлены
            $('#result_form').html('Ошибка. Данные не отправлены.');
    	}
 	});
}

И есть PHP код, который обрабатывает данные
<?php

if (isset($_POST["email"]) && isset($_POST["password"]) ) { 

	// Формируем массив для JSON ответа
    $result = array(
    	'email' => $_POST["email"],
    	'password' => $_POST["password"]
    ); 

    // Переводим массив в JSON
    echo json_encode($result); 
}

?>

Вот так я подключаю redbeanPHP
require "db.php";

А вот так записываю данные в бд
$user = R::dispense('users');
			$user->login = $data['login'];
			$user->email = $data['email'];
			$user->password = password_hash($data['password'], PASSWORD_DEFAULT); //пароль нельзя хранить в открытом виде, мы его шифруем при помощи функции password_hash для php > 5.6
			R::store($user);


Но как только я пытаюсь на стороне сервера записать данные в mysql, все ломается и не работает.
Я подключаю ORM redbeanPHP и уже все ломается.
Что делать? Помогите пожалуйста. Как правильно отправить эти данные и записать их бд?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Just__Den
FULL STACK
5d586c6061278385393747.jpeg

1) указывает на то, что в браузер с сервера поступает страница HTML-документа, которая начинается с тега . Формат её текстовый, а не json, поэтому ф-ция $.parseJSON(response); не может её прочитать и выбрасывает ошибку ( первый символ < )

2) в коде пропиши не

echo json_encode($result);

а:

header('Content-Type: application/json');
echo json_encode($result);
exit;

что укажет на то, что сервер посылает уже раскодированные данные и ф-ция $.parseJSON(response); для их считывания не нужна

3) после этого посмотри какая ошибка выводится в консоль. Там скорее всего будет стек ошибок РНР. Пришли его скриншот. Или может сам увидишь ошибку и разберёшься
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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