我正在尝试使用AJAX和POST提交密码更改
通常我可以使它工作正常,如果密码更改完成且没有错误,它只返回一个空白的白页(这是没有Ajax)我试图进行整个密码更改,发生在小div,然后用响应更新(成功或不成功)
我已经删除了大部分代码,因此我可以消除可能的问题:
<div id="s-window">
<form id="changepassword" action="changePassword.php" method="POST">
<input type="password" name="currentPassword" placeholder="Current Password"/>
<input type="password" name="newPassword" placeholder="New Password"/>
<input type="password" name="confirmPassword" placeholder="Confirm Password"/>
<input class="button" type="submit" value="Change Password" />
</form>
</div>
changePassword.php:
<?php
include('config.php');
$currentPassword = ($_POST['currentPassword']);
$password = ($_POST['newPassword']);
$password2 = ($_POST['confirmPassword']);
$username = ($_SESSION['username']);
if ($password <> $password2)
{
echo "Your passwords do not match.";
}
else if ($password === $password2)
{
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$sql = "UPDATE Staff SET password='$hashed_password' WHERE username='$username'";
mysql_query($sql) or die( mysql_error());
}
else
{
mysqli_error($con);
}
mysqli_close($con);
?>
我知道MySQL的东西很混乱 - 这是我要处理的事情。
$(".button").click(function() {
$.ajax({
url: "changePassword.php",
type: "POST",
dataType: "html",
success: function(html){ // this happens after we get results
$("#s-window").append(html);
}
});
};
我没有使用jQuery的经验,我的谷歌搜索没有产生任何足够类似的结果,我可以建立。
答案 0 :(得分:3)
您获得空白页面的原因是form
元素submit
事件在点击button
后仍在触发。为了防止这种情况,使用更好的模式是将代码挂钩到submit
事件而不是按钮单击。试试这个:
$("#changepassword").submit(function(e) {
e.preventDefault(); // stop normal form submission
$.ajax({
url: "changePassword.php",
type: "POST",
data: $(this).serialize(), // you also need to send the form data
dataType: "html",
success: function(html) {
$("#s-window").append(html);
}
});
});
请注意,只有在提供的密码不匹配时,您的PHP代码才会返回字符串值。您可能希望更改该行为,以便最终用户也知道该操作何时成功完成。
答案 1 :(得分:0)
结果在changepassword.php
页面
然后在一个变量
作为回应,您可以添加支票 与resp 在成功功能 点击这个
if(resp=='updated')
{
alert('password has been updated');
}
if(resp=='notupdated')
{
alert('password not updated,plz try again');
}
希望这会有所帮助...
答案 2 :(得分:0)
几乎没有问题。 1.您需要更改按钮类型提交到按钮。因为按钮类型提交总是提交您的表格。 2. Javascript代码如下:
$(&#34; .button&#34)。单击(函数(){
var str = $( "#changepassword" ).serialize();
$.ajax({
url: "changePassword.php",
type: "POST",
dataType: "html",
data: str,
success: function(html){ // this happens after we get results
$("#s-window").append(html);
}
}); })