Как вернуть данные от php после ajax запроса

127
14 декабря 2020, 14:30

Как вывести результат ajax запроса в alert?

Есть ajax запрос:

$(document).ready(function() {
  $('#singup').submit(function(e){
    e.preventDefault();
    $.ajax({
      type: this.method,
      url: this.action,
      data: $(this).serialize(),
      success: function(data) {
        alert(data);
      };
    }).done(function() {
      alert("Вы успешно зарегестрированны!");
    });
    return false;
  });
});

Есть php:

<?php
require "db.php"; 
$data = $_POST;
$errors = array();
if (R::count('users', 'login = ?', array($data['login'])) > 0 ) {
  $errors[] = 'Пользователь с таким логином уже существует!';
}
if (R::count('users', 'email = ?', array($data['email'])) > 0 ) {
  $errors[] = 'Пользователь с таким email уже существует!';
}
if (empty($errors)) {
    $user = R::dispense('users');
    $user->name = $data['name'];
    $user->surname = $data['surname'];
    $user->login = $data['login'];
    $user->email = $data['email'];
    $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
    $user->start_date = date("Y-m-d H:i:s");
    R::store($user);
}
else{
  echo array_shift($errors);
}
?>

Перечитал множество вопросов на эту тему, везде говорят сделать именно так в js:

success: function(data) {
  alert(data);
};

В php:

echo array_shift($errors);

Но в итоге, вместо вывода в alert, вывод происходит как echo в php файле

Answer 1

В Вашем скрипте синтаксическая ошибка (посмотрите сообщение в консоли браузера), поэтому страница ведет себя, как если бы этого скрипта вообще не было.

Уберите точку с запятой после:

  success: function(data) {
    alert(data);
  };

$(document).ready(function() { 
  $('#singup').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
      type: this.method, 
      url: this.action, 
      data: $(this).serialize(), 
      success: function(data) { 
        alert(data); 
      }; 
    }).done(function() { 
      alert("Вы успешно зарегестрированны!"); 
    }); 
    return false; 
  }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

READ ALSO
Обратный слеш в json_decode

Обратный слеш в json_decode

Есть текст(из БД), который нужно превратить в jsonпример

123
Не меняется title в заголовке страницы bitrix

Не меняется title в заголовке страницы bitrix

Прошу помощиrequire($_SERVER["DOCUMENT_ROOT"]

127
SqLite: LIMIT — выдаёт синтаксическую ошибку

SqLite: LIMIT — выдаёт синтаксическую ошибку

Подскажите пожалуйста, как задать LIMIT, чтобы вывести на страницу определённое количество записейВот так не работает:

103
PHP - Выборка из нескольких баз данных

PHP - Выборка из нескольких баз данных

Перерыл все, что можно, но внятного ответа так и не нашелЗадача в следующем

106