POST上的AJAX更新

时间:2015-04-15 14:50:16

标签: php jquery ajax

我正在尝试使用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的经验,我的谷歌搜索没有产生任何足够类似的结果,我可以建立。

3 个答案:

答案 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);
}

});       })

  1. 您没有在changePassword.php文件中打印任何值。成功登录后要显示的信息应该在changePassword.php文件上打印。 希望这能帮到你