2016-12-16 184 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