Php 发布AJAX更新

Php 发布AJAX更新,php,jquery,ajax,Php,Jquery,Ajax,我正在尝试使用AJAX和POST提交密码更改 正常情况下,我可以使其正常工作,如果密码更改完成且无错误,它只返回一个空白的白色页面(这没有Ajax)。我正在尝试在一个小div中进行整个密码更改,然后将随响应更新(成功或不成功) 我减少了大部分代码,以便消除可能出现的问题: <div id="s-window"> <form id="changepassword" action="changePassword.php" method="POST">

我正在尝试使用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>

我没有使用jQuery的经验,我的谷歌搜索也没有产生任何足够相似的结果,我可以从中构建。

您得到一个空白白页的原因是
表单
元素
提交
事件在单击
按钮
后仍在触发。为了防止这种情况,更好的模式是将代码挂接到
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代码仅在提供的密码不匹配时返回字符串值。您可能希望更改该行为,以便最终用户也知道操作何时成功完成。

结果显示在
changepassword.php
页面中 然后在一个变量中将输出回显为“已更新”或“未更新”

作为响应,您可以添加一张支票 与resp 在成功函数中 这是什么

    if(resp=='updated')
{
alert('password has been updated');
}
if(resp=='notupdated')
{
alert('password not updated,plz try again');
}
希望这有帮助…

问题很少。 1.您需要将按钮类型更改为submit to button。因为按钮类型提交总是提交表单。 2.Javascript代码如下所示:

$(“.button”)。单击(函数(){

})); })

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

  • 您没有将任何
    数据设置为与请求一起发送,这意味着什么?我该怎么做呢?为了熟悉您尝试使用的方法,我可以推荐“我打开了API页面”。那里的信息太多了,没有用处。我不知道哪些是必需的,哪些是额外的,就像需要一杯水,有人递给你一个游泳池。唯一需要的参数是
    url
    其余的都是可选的,因为它们都有默认值。实际上发送数据也很好:)@TrueBlueAussie谢谢,我今天连树都看不见了!:)+仍然返回空白空白页。我希望只更新div,而不是刷新整个页面。这段代码应该可以帮你做到这一点。您是否已检查控制台是否有任何错误?JSON数据类型不是必需的。它可能更具语义,但肯定不是必需的,也不会影响表单提交时的重定向问题。我同意你的观点,因为可以在changepassword.php页面中声明一个简单的变量来更新密码,这将有助于检查密码是否被更新-Rory McCrossan
    $("#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);
            }
        });
    });
    
        if(resp=='updated')
    {
    alert('password has been updated');
    }
    if(resp=='notupdated')
    {
    alert('password not updated,plz try again');
    }
    
            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);
    }