[英]AJAX Post via jQuery and PHP
这是我第一次使用AJAX。 我正在尝试将数据从HTML表单写入phpmyadmin数据库。 我正在使用jQuery进行AJAX调用。 我怀疑jQuery中有问题,因为我在registerUser.php
文件的顶部包含了带有echo
的Javascript alert
,当我尝试运行此代码时它不会出现,因此PHP甚至没有运行。 浏览器中没有Javascript错误。 感谢您的见解。
function registerUserViaAjax() {
$.ajax({
type: "POST",
url: "registerUser.php",
data: {
registerUsername: $('#registerUsername').val(),
registerPassword: $('#registerPassword').val(),
registerPassword: $('#registerEmail').val()
}
})
}
<label>Username</label>
<input class="w3-input" type="text" id="registerUsername">
<label>Password</label>
<input class="w3-input" type="password" id="registerPassword">
<label>Confirm Password</label>
<input class="w3-input" type="password" id="registerConfirmPassword">
<label>Email Address</label>
<input class="w3-input" type="text" id="registerEmail">
<button class="w3-btn w3-green" style="margin-top:3%;margin-bottom:3%" id="registerButton" onclick="registerUserViaAjax()">Go</button>
<?php
$host = 'localhost';
$user = 'root';
$pw = '';
$db = 'fall2167';
$dbc = mysqli_connect($host, $user, $pw, $db)
or die('LOCAL CONNECT ERROR: '. mysqli_connect_error());
$uname = mysqli_real_escape_string($dbc, $_POST['registerUsername']);
$pword = mysqli_real_escape_string($dbc, $_POST['registerPassword']);
$pword = password_hash($pword, PASSWORD_DEFAULT);
$email = mysqli_real_escape_string($dbc, $_POST['registerEmail']);
$check = mysqli_query($dbc, "select id from hw6 where uname = '$uname'")
or die('confirm6 read error: ' . mysqli_error($dbc));
if (mysqli_num_rows($check) != 0)
{
echo "<script> usernameTaken(); </script>";
exit;
}
$query = "insert into users(uname, pword, email)" . "values('$uname','$pword','$email')";
$result = mysqli_query($dbc, $query)
or die('DB Write Error: ' . mysqli_error($dbc));
echo "<script> openSuccessMessage(); </script>";
mysqli_close($dbc);
?>
您应该使用done
和fail
回调,以确保发生了什么以及从服务器端得到的响应是什么:
$.ajax({
type: "POST",
url: "registerUser.php",
data: {registerUsername: $('#registerUsername').val(), registerPassword: $('#registerPassword').val(), registerPassword: $('#registerEmail').val() },
})
.done(function(response) {
alert( response );
//call you function 'openSuccessMessage' here
openSuccessMessage();
})
.fail(function(response) {
alert( response );
});
您的openSuccessMessage
应该在回调中而不是在PHP代码中调用。
注意:如上述代码所示,在PHP代码中添加try{ }catch(){}
以调试指令并在警报中显示响应。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.