我正在尝试创建一个用于更改用户密码的表单。控制台中没有生成错误,但没有更新任何内容。验证方面也在工作,所以它必须归结为Ajax部分?
免责声明:我知道我不应该在PHP中使用mysql,但我正在努力获得基础知识,并将在以后学习mysqli :) 另外,config.php用于其他多个函数,所以我知道config.php没问题。
知道出了什么问题吗?
HTML:
<fieldset>
<form method="post" name="password-form" id="form-password">
<label>Password:</label> <br>
<input type="password" name="password" id="password" value="" size="32" />
<br>
<br>
<label>Re-Enter Password:</label> <br>
<input type="password" name="password-check" id="password-check" value="" size="32" />
<br>
<br>
<input type="submit" value="Submit" id="passsubmit">
</form>
</fieldset>
JQuery的:
$(function(){
$("#passsubmit").click(function(){
$(".error").hide();
var hasError = false;
var newpass = $("#password").val();
var checkVal = $("#password-check").val();
if (newpass == '') {
$("#password").after('<span class="error">Please enter a password.</span>');
hasError = true;
} else if (checkVal == '') {
$("#password-check").after('<span class="error">Please re-enter your password.</span>');
hasError = true;
} else if (newpass != checkVal ) {
$("#password-check").after('<span class="error">Passwords do not match.</span>');
hasError = true;
}
if(hasError == true) {return false;}
if(hasError == false) {
$.ajax({
type: "POST",
url: "resource/changepassword.php",
data: {newpass:newpass},
success: function(){}
});
};
});
});
PHP:
<?php
session_start();
include('config.php');
$user_check=$_SESSION['login_user'];
$newpass=$_POST['newpass'];
$sql_rec = "select UserID from useradmin where username='$user_check' ";
$rs_rec = mysql_query($sql_rec);
$data_rec = mysql_fetch_object($rs_rec);
$userID = $data_rec->UserID;
$updatesql="UPDATE useradmin SET passcode='$newpass' WHERE UserID=$userID";
mysql_query($updatesql, $bd) or die(mysql_error());
?>
$ bd是来自config.php的我的MySQL连接细节。
更新:
我已将<div id="passsubmit2">123</div>
添加到我的页面并将jquery更改为:
$(function(){
$("#passsubmit2").click(function(){
它的效果非常好,所以只有在使用表单按钮时它才起作用?
答案 0 :(得分:1)
最终想出来。
我需要添加event.preventDefault();
以阻止普通表单提交。
答案 1 :(得分:1)
由于您是通过Ajax请求将表单数据发送到服务器,因此您不需要首先提交提交类型的输入,因为这将尝试在单击时提交表单,您将不得不编写其他代码来停止该提交按钮的默认功能。因此,请使用简单的html按钮或链接替换该提交按钮。
答案 2 :(得分:0)
将ajax中的数据更改为
if(hasError == false) {
$.ajax({
type: "POST",
url: "resource/changepassword.php",
data: {
newpass : newpass,
},
success: function(){}
});
};
因为您没有将数据发送到服务器和未声明的信息变量
答案 3 :(得分:0)
确保将所有必需的data
传递给PHP服务器。现在,从我所看到的,你传递的是一个空变量。
info={
newpass : newpass,
checkVal: checkVal
};
$.ajax({
type: "POST",
url: "resource/changepassword.php",
data: info,
success: function(response){
console.log(response);
}
});
在PHP方面:
<?php
$newPassword=$_POST['newpass '];
编辑:进一步了解一下,你真的想在会话中存储用户ID(唯一数字ID)而不是用户名。使用用户名作为唯一值来引用你的mysql数据库是一个非常糟糕的想法(相信我,我犯了同样的错误)。
此外,您应该要求用户在更改当前密码时输入旧密码(如果他们将网站放在计算机上,该怎么办)。