@dpopov29033

Как с помощью php вернуть javascript'у (ajax), что значения не были переданы?

У меня данные из формы передаются с помощью ajax
$('#ajax_form').submit(function(e) {
    e.preventDefault();
    $.ajax({
        url: "php/signup.php",
        type: "POST",
        data: $('#ajax_form').serialize(),
        success: function(response) {
            swal("Успешно!", "Вы успешно зарегистрировались!", "success")
            $('#result_form').html('<header><h2>Вы авторизованы!</h2></header><br />' + '<input type="button" value="Каталог" />' + '&nbsp' +'<input type="button" value="Личный кабинет" />' + '<br /><br /><br />');
        },
        error: function(response) {
            swal ( "Oops" ,  "Something went wrong!" ,  "error" )
        }
    });
});

А обрабатываются на стороне сервера вот так
<?php
require '../db.php';
?>
<?php
if (R::count('users', "email = ?", array($_POST['email'])) > 0) {
	//вот вернуть значение false
} else {
$user           = R::dispense('users');
$user->email    = $_POST['email'];
$user->password = password_hash($_POST['password'], PASSWORD_DEFAULT);
R::store($user);
}
?>


Как правильно сделать так, чтоб когда выполняется if на стороне сервера, чтоб он возвращал значение false джаваскрипту и выполнялся код с этой строки
error: function(response) {
  • Вопрос задан
  • 1253 просмотра
Решения вопроса 1
@andreysuha
Что то знаю
Пригласить эксперта
Ответы на вопрос 1
@Lukentui
Vue.JS | Express.JS | Laravel | Flask | Fasthttp
Этот код даст понять серверу, что операция прошла удачно:
return json_encode([ 'status': true, ]);
true = удачно, false = нет.
$.ajax({
	url: "php/signup.php",
	type: "POST",
	data: $('#ajax_form').serialize(),
	dataType: 'json',
	success: function(response) {
		if(response.status) {
			alert('success');
		} else {
			alert('err');
		}
	},
});


Вы в ответ на запрос отправляете JSON(php переведет массив в JSON), а AJAX читает в JSON параметр status и в зависимости от состояния параметра, выполняет действие.

dataType: 'json'
Говорит AJAX о том, что ответ сервера нужно читать как JSON.
if(response.status) {
По умолчания, если не указывается сравнение, JS пометит 0/false как ложное, а true/число(не равное 0) как правду.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы