#php #ajax
#php #ajax
Вопрос:
У меня есть следующая HTML-форма в signup.php:
<form id="signup" action="" method="POST" autocomplete="off" autocomplete="false">
<div class="signup_row action">
<input type="text" placeholder="What's your Name?" name="name" id="name" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
<input type="text" placeholder="Got an Email?" name="email" id="email" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
<div class="g-recaptcha" style="margin-top:30px;" data-sitekey="6LeCkZkUAAAAAOeokX86JWQxuS6E7jWHEC61tS9T"></div>
<input type="submit" class="signup_bt" name="submit" id="submt" value="Create My Account">
</div>
</form>
Я пытаюсь отправить форму с помощью ajax, без обновления страницы:
<!-- include files -->
<?php include 'assets/config.php';?>
<?php if(isset($_SESSION["CUSTOMER_ID"])){
header('Location: myaccount.php'); } ?>
<script>
$(function () {
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'do_signup_check.php',
data:{"name":name,"email":email},
success: function () {
if(result == 0){
$('.signup_side').fadeOut(500).promise().done(function() {
$('.signup_side').load('do_signup.php',function(){}).hide().fadeIn(500);
});
}else{
$('.signup_side').fadeOut(500).promise().done(function() {
$('.signup_side').load('assets/login.php',function(){}).hide().fadeIn(500);
}
});
});
});
</script>
Я отправляю форму в do_signup_check.php и запускаю запрос, чтобы узнать, зарегистрирован ли пользователь уже. echo 1 для положительного результата и 0 для отрицательного результата:
Do_Signup_Check.php:
<?php
session_start();
require 'assets/connect.php';
$myName=$_POST["name"];
$myEmail=$_POST["email"];
$check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");
if (!$check) {
die('Error: ' . mysqli_error($conn)); }
if(mysqli_num_rows($check) > 0){
echo '1';
}else{
echo '0';
}
?>
Если результат равен 0, то ajax должен загрузить мою страницу do_signup.php.
Но, увы, это не заходит так далеко. Это работало, а затем я выключил компьютер и вернулся к нему, и теперь это не будет работать.
Пожалуйста, кто-нибудь может показать мне, где я ошибся?
Комментарии:
1. Итак, что вы изменили?
2. Есть ли ошибки в консоли вашего браузера? Единственное, что вы делаете неправильно, это напрямую вставляете значения в инструкции SQL, используйте подготовленные инструкции.
3. Вы не присваиваете значения переменным
name
и4. Изменить
data:{"name":name,"email":email},
наdata:{name:name, email:email},
5. Кроме того, весь ваш первый PHP-скрипт зависит от переменной сеанса CUSTOMER_ID; верните что-нибудь, если этого нет, чтобы проверить это.
Ответ №1:
if(result == 0){
здесь результат не используется в функции успеха:
вам, должно быть, нужно передать результирующую переменную здесь:
success: function () {
как:
success: function (result) {
Теперь вы можете использовать свое условие if(result == 0){
Во-вторых, я предлагаю вам передать dataType: 'html'
свой ajax-запрос.
Редактировать:
Вы используете <?php if(isset($_SESSION["CUSTOMER_ID"])){
строку в своем коде, если вы не используете session_start()
в своем коде, то эта проверка не сработает.
Для этой строки data:{"name":name,"email":email},
я не видел name
и email
в вашем коде, где вы определяете эти 2 переменные, которые вы используете в своих параметрах ajax.