2016-12-16 4 views
0

по какой-то причине Ajax запрос не возвращает ничего, никакого ответа, никакой ошибки в базе данных и нет ошибок, код:Ajax запрос PHP не работает

HTML

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
(function(){ 
    var Ajax = new XMLHttpRequest(); 
    Ajax.open("GET", "config.php", true); 

    Ajax.onreadystatechange = function(){ 
    if(this.readyState === 4 && this.status === 200){ 
     data = Ajax.response; 
     console.log(data); 
    } 
} 

$('#form-register').submit(function(event){ 
    event.preventDefault(); 
    $('#output-register').html(Ajax.response); 
    Ajax.send(); 
    }); 
}()); 

</script> 
</head> 
<body> 
<div class="container"> 
<main style="width:400px"> 
<h1>Login</h1> 
<form method="post" action="config.php"> 
<div class="form-group"> 
<input type="text" name="username" class="form-control" required placeholder="Username"> 
</div> 
<div class="form-group"> 
<input type="password" name="password" class="form-control" required placeholder="Password"> 
</div> 
<div class="form-group"> 
    <button type="submit" name="login" class="btn btn-secondary">Submit</button> 
</div> 
</form> 
<h1>Register</h1> 
<form id="form-register"> 
<div id="output-register"></div> 
<div class="form-group"> 
<input type="text" name="reg_username" class="form-control" required placeholder="Username"> 
</div> 
<div class="form-group"> 
<input type="password" name="reg_password" class="form-control" required placeholder="Password"> 
</div> 
<div class="form-group"> 
    <button type="submit" name="register" class="btn btn-secondary">Submit</button> 
</div> 
</form> 
</main> 
</div> 
</body> 
</html> 

PHP

<?php 

require_once("db.php"); 
    session_start(); 



if(isset($_POST["register"])){ 

    $reg_username = mysqli_real_escape_string($db,trim(htmlspecialchars($_POST["reg_username"]))); 
    $reg_password = mysqli_real_escape_string($db,trim(htmlspecialchars($_POST["reg_password"]))); 

    $insert_user = "INSERT INTO benutzer (ID, Benutzername, Passwort) VALUES ('', '$reg_username', '$reg_password')"; 

    $insert = $db->query($insert_user); 
    if($insert === true){ 
     echo "Successfull!"; 
    } else { 
     echo "Eoor:". $db->error; 
    } 



} 
+3

Вы отправляете запрос Ajax - 'Ajax.open ("GET", "config.php", правда);', но вы не отправляете никаких значений формы. – Sean

ответ

0

Вместо использования какой-либо сумасшедшей методологии старой школы используйте метод AJAX jQuery. Удалить это:

(function(){ 
    var Ajax = new XMLHttpRequest(); 
    Ajax.open("GET", "config.php", true); 

    Ajax.onreadystatechange = function(){ 
    if(this.readyState === 4 && this.status === 200){ 
     data = Ajax.response; 
     console.log(data); 
    } 
} 

$('#form-register').submit(function(event){ 
    event.preventDefault(); 
    $('#output-register').html(Ajax.response); 
    Ajax.send(); 
    }); 
}()); 

И заменить его:

$(function() { 
    $('#form-register').submit(function (event) { 
    event.preventDefault(); 
    $('#output-register').load("config.php"); 
    }); 
}); 

Потенциальные проблемы:

  1. Ваш AJAX запускает еще до отправки формы.
  2. Форма не видна JavaScript, поскольку она запускается до загрузки DOM.
  3. Вы используете GET вместо POST.
  4. Реализация старой школы AJAX может не быть надежной.

В настоящее время вы не отправляете какие-либо данные формы с вызовом AJAX, который я реализовал точно так же. Если вам нужно отправить, это должно быть сделано по-другому, предпочтительно:

$(function() { 
    $('#form-register').submit(function (event) { 
    event.preventDefault(); 
    // Change this to $.get if you want to GET the form data instead of POST. 
    $.post("config.php", $(this).serialize(), function (res) { 
     $('#output-register').html(res); 
    }); 
    }); 
}); 
+0

Спасибо за быстрый ответ, я не знаю, почему, но все еще не работает = ( – Gabo

+0

@Gabo Любые ошибки в консоли? –

+0

Нет ошибок, никаких изменений в MySQL, нет ответа – Gabo

Смежные вопросы