JQuery没有从php中获取回音
我将一条消息(“ok”)从PHP脚本回显到一个jQueryAjax调用 我回显了正确的消息,当我登录时,它会显示在控制台中,但相应的jquery函数没有启动-根据代码,我应该得到一条“您的密码已成功更改”消息,但我只得到一条“有问题”消息-有人能提出原因吗 以下是PHP的第一个代码:JQuery没有从php中获取回音,php,javascript,jquery,ajax,echo,Php,Javascript,Jquery,Ajax,Echo,我将一条消息(“ok”)从PHP脚本回显到一个jQueryAjax调用 我回显了正确的消息,当我登录时,它会显示在控制台中,但相应的jquery函数没有启动-根据代码,我应该得到一条“您的密码已成功更改”消息,但我只得到一条“有问题”消息-有人能提出原因吗 以下是PHP的第一个代码: if(isset($_POST['oldpass'])){ $oldpass = mysql_real_escape_string($_POST['oldpass']); $newpass = my
if(isset($_POST['oldpass'])){
$oldpass = mysql_real_escape_string($_POST['oldpass']);
$newpass = mysql_real_escape_string($_POST['newpass']);
$sql = "SELECT password, salt FROM users WHERE email='$log_email' AND id='$log_id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$numrows = mysqli_num_rows($query);
if($numrows > 0){
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$current_salt = $row["salt"];
$db_pass = $row["password"];
}
$old_pass_hash = crypt($oldpass, $current_salt);
if ($old_pass_hash != $db_pass){
echo "problem";
exit();
}
}
$s = "$2a$10$";
$random = randStrGen(20);
$salt = $s.$random;
$p_crypt = crypt($newpass, $salt);
$sql = "UPDATE users SET password='$p_crypt', salt='$salt' WHERE email='$log_email' AND id='$log_id' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
if ($query == true){
$_SESSION['password'] = $p_crypt;
echo 'ok';
exit();
}
}
?>
这是javascript/JQuery
function change_password(){
var oldpass = $('#old_pass').val();
var newpass = $('#new_pass').val();
var newpass_conf = $('#confirm_new_pass').val();
if(newpass != newpass_conf){
$('#status').html("Your passwords do not match");
} else if(newpass=="" || oldpass==""){
$('#status').html("You have not entered anything");
}
$.ajax({
type: 'POST',
url: "changePassword.php",
dataType: 'text',
data: {
"oldpass": oldpass,
"newpass": newpass_conf },
success:function(data){
if(data == "ok"){
$('#change_password_form').html("<h2> Success</h2><div class='noerror'><p> Your password has been changed successfully.</p> <p> You may now close this window.</p></div>");
} else {
$('#status').html("There was a problem");
}
}
});
}
$(document).ready(function(){
$(document).on('click','#change_password', function(){
change_password();
});
});
</script>
功能更改\u密码(){
var oldpass=$('#old_pass').val();
var newpass=$('#new_pass').val();
var newpass_conf=$('#confirm_new_pass').val();
if(newpass!=newpass\u conf){
$('#status').html(“您的密码不匹配”);
}else if(newpass==“”| oldpass==“”){
$('#status').html(“您没有输入任何内容”);
}
$.ajax({
键入:“POST”,
url:“changePassword.php”,
数据类型:“文本”,
数据:{
“oldpass”:oldpass,
“newpass”:newpass_conf},
成功:功能(数据){
如果(数据==“正常”){
$(“#更改(密码)表单”).html(“成功您的密码已成功更改。您现在可以关闭此窗口。”;
}否则{
$('#status').html(“出现了问题”);
}
}
});
}
$(文档).ready(函数(){
$(文档)。在('单击','更改密码',函数()上){
更改_密码();
});
});
最后是html
<div> <h1>Change your password</h1></div><hr>
<form id="change_password_form" class="input" onsubmit="return false;">
<div> <label for="old_pass">Current Password:</label>
<input id="old_pass" type="text" class="searchbox" onfocus="emptyElement('status')" maxlength="88" value=""></div>
<div> <label for="new_pass">New Password:</label>
<input id="new_pass" class="searchbox" type="text" onfocus="emptyElement('status')" maxlength="88" value=""> </div>
<div><label for="confirm_new_pass">Confirm New Password:</label>
<input id="confirm_new_pass" class="searchbox" type="text" onfocus="emptyElement('status')" maxlength="88" value=""><div>
<input type="button" style="position:relative;top:10px; float:right;" id="change_password" value="Change Password"></form>
<span id="status" class="statuserror"></span>
</body>
</html>
更改密码
当前密码:
新密码:
确认新密码:
我不久前遇到了这个问题,尽管情况不同,但始终无法解决。我所做的是将数据类型更改为json
,如下所示:
$.ajax({
type: 'POST',
url: url,
data: 'data=data&other=other'
dataType: 'json',
//if everything goes out as planned
success: function(response) {
alert(response['data']);
}
});
在php中
$respond = array("data" => 'ok',
"other" => 'whatever else'
);
echo json_encode($respond); //send a response back to javascript
exit();
在ajax调用中更改
数据类型:“json”
然后在php代码中返回json数据json_编码(数组('response'=>'ok');
您的ajax成功函数应该如下所示
success: function (data) {
var resultObject = jQuery.parseJSON(data);
if(rersultObject['response']=='ok') {
$('#change_password_form').html("<h2> Success</h2><div class='noerror'><p> Your password has been changed successfully.</p> <p> You may now close this window.</p></div>");
} else {
$('#status').html("There was a problem");
}
}
}`
成功:函数(数据){
var resultObject=jQuery.parseJSON(数据);
如果(ReResultObject['response']=='ok'){
$(“#更改(密码)表单”).html(“成功您的密码已成功更改。您现在可以关闭此窗口。”;
}否则{
$('#status').html(“出现了问题”);
}
}
}`
这里
parseJSON
用于将JSON字符串转换为javascript对象。data
可能不等于'ok'
?是否有一个可以测试的示例页面?是否使用Firebug或其他工具分析了AJAX请求/响应?这是状态代码(200404500)收到?@akonsu奇怪的是,我有一个console.log(数据),显示“ok”正在通过-这就是为什么我如此困惑