【问题标题】:ajax form redirect after submit提交后的ajax表单重定向
【发布时间】:2015-07-22 01:39:42
【问题描述】:

您好,我在提交表单后遇到重定向问题。 我正在使用简单的 ajax 表单在 div 中显示登录错误。

$(document).ready(function(){
$('#formlogin').on('submit', function (e) {

    $.ajax({
        type: 'POST', 
        url: 'login.php',
        data: $(this).serialize(),
        success: function(data) {
        $('div#ack').empty().append(data);

        } 

    });

    e.preventDefault();
});

问题是提交成功后它没有重定向到“logged_in.php”

这里是php登录。

if (empty($username) === true || empty ($password) === true)    {
    $errors [] = 'Please enter both username and password!';

} else if (user_exists($username) === false)   {
    $errors [] = 'We can not find the name. Have you registered?';
} else {

    $login = login($username, $password);
    if ($login === false)  {
        $errors [] = 'This user name or password is incorrect.';

    } else {

        $_SESSION['user_id'] = $login;
        header('Location: logged_in.php');  
        exit();

    }


}

【问题讨论】:

  • 感谢通过 ajax 序列化和发布表单的代码 - 正是我需要的,哦,重定向代码只是 window.location.href = "EditItem.php?batchid=" + bid + "&quoteitemid=NEW";

标签: javascript php jquery ajax forms


【解决方案1】:

如果您重定向使用 AJAX 调用的页面,它将重定向父页面。

您应该做的是回显一些标识用户已成功登录的内容。

也许你输入的不是header('Location: logged_in.php');

echo "success";

然后,在你的成功函数中:

success: function(data) {
    if (data == "success")
        window.location = "logged_in.php";
    else
        alert("Wrong password.");
}

注意,ajax中的success并不代表你已经登录成功,只是表示对页面的请求返回没有错误(500)。您仍然需要决定要如何处理您的数据。

【讨论】:

  • 谢谢你,我明白了:)
【解决方案2】:

这里有两种不同的东西。

1 - 您的 AJAX 函数。 它在异步调用服务器的页面上

2 - 您的登录页面。 它由包含 AJAX 的页面调用

您第二页中的代码发生在服务器中,而您的 AJAX 代码发生在您的客户端中。

您应该在您的 php 登录页面中返回一条成功消息,然后在您的成功回调中检查该消息是否正确,这意味着用户已成功登录。检查消息是否正确后,您可以从成功回调中重定向用户,执行以下操作: location.href = "yourUrl"

【讨论】:

    【解决方案3】:

    这里有一些非常适合我的生产代码,用于提交表单然后重定向。

    $.ajax({
            url: "QuoteReload.php",
            type: 'GET',
            data: 'batchid=' + bid + '&operation=archiveBatch',
        success: function(response) { 
                    // window.location.href = "EditItem.php?batchid=" + bid + "&quoteitemid=NEW";
                    $(location).attr('href', 'Quote.php?QuoteId=<?php echo $QuoteId; ?>')
                },
        error: function(xhr) {
                $(ddl).css("background-color", "#4C25BC");
                alert('Delete Batch error: ' + xhr); 
                 }
    });
    

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 1970-01-01
      • 2018-07-21
      • 2013-04-13
      • 1970-01-01
      相关资源
      最近更新 更多