2016-12-16 190 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「,true);'但你並沒有發送任何表單值。 – Sean

回答

0

而不是使用一些瘋狂的老派方法,使用jQuery的AJAX方法。刪除此:

(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被加載之前被觸發。您使用的是GET而不是POST
  3. 老派的AJAX實現可能不可靠。

目前,您並沒有通過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