如何通过ajax处理phpbb的外部php登录表单?

时间:2018-01-23 08:14:51

标签: javascript php jquery ajax phpbb

最近将我的页面转换为jquery / ajax,以获得真正的动态页面。我的一些PHP函数正在遭受痛苦。这是最新的。

这是我用于处理登录的PHP

<?php
if($user->data['is_registered'])
{
   //user is logged in
    echo "<br>";
    echo 'Welcome back ';
    print $user->data['username'];
    echo "<br>";
    echo 'You have ' . $user->data['user_unread_privmsg'] . ' unread <a href="./forum/ucp.php?i=pm&folder=inbox">message(s)</a>';
    echo '</h3><h4><a title="See You Later" href="' . append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout', true, $user->session_id). '">Log out</a></h4>';
}
else{
     //user is not logged in 
   echo '
       <form method="post" action="forum/ucp.php?mode=login">
         <label for="username">
            Username:
         </label>
         <input type="text" name="username" id="username" size="16" />
         <label for="password">
            Password:
         </label>
         <input type="password" name="password" id="password" size="16" />
         <label for="autologin">
            Remember?:
         </label>
         <input type="checkbox" name="autologin" id="autologin"  />
         <input type="hidden" name="redirect" value="../" />
         <input type="submit" value="Log In" name="login" id="login" />
         <a title="Register" href="forum/ucp.php?mode=register">
         <br>
          Register
         </a>
      </form>

        ';
}
?>

脚本。

    <script type='text/javascript'>
    $(document).ready(function() {
    // handle the login form through ajax for phpbb
    $(document).on('submit', '#login', function(event) {
    event.preventDefault();

    var url= $(this).attr('action');
    alert(url);
    $.ajax({
        url: url,
        type: 'POST',
        dataType: 'HTML',
        data: new FormData(this),
        processData: false,
        contentType: false,
        success: function (data, status) {
            alert(data);
        },
        error: function (xhr, desc, err) {
            console.log('error');
        }
    });
});
});
</script>

我已经尝试将jquery作为独立运行,并在PHP之前和之后回显它。我已经尝试删除所有隐藏的重定向,但遗憾的是这听起来像是什么,登录并且什么都不做。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您已将submit处理程序附加到该按钮。该按钮没有submit个事件,没有表单数据且没有action属性,因此您的代码将无法运行。

您需要将事件处理程序附加到表单。

如果您有多个表单,可以添加一个ID来识别它:

<form method="post" action="forum/ucp.php?mode=login" id="loginForm">

然后在你的javascript中:

$(document).on('submit', '#loginForm', function(event) {