0

所以我有一个有趣的问题,我希望其他人之前已经偶然发现(并解决了)。

我已经为这个特定应用程序上的用户设置了一个“更改我的密码”选项,如果用户忘记了他们的密码,他们可以请求更改它。我向他们发送一封电子邮件,其中包含嵌入在链接中的哈希,该链接将他们引导至简单的“更改密码”屏幕。 在此处输入图像描述

在此处输入图像描述

一旦用户单击更新按钮 - 我通过 ajax 调用适当的控制器操作,服务器会处理各种事情,例如更新密码、删除令牌和重定向用户。

这是与更新按钮相关的ajax:

updatePassword: function() {
        $.ajax({
            url: '/side-panel/update-password',
            dataType: 'json',
            type: 'post',
            data: {
                token: $('input[name=token]').val(),
                id: $('input[name=id]').val(),
                new_password: $('input[name=new-password]').val()
            },
            beforeSend: function() {
                kts.show_loader('show');
            },
            success: function(data) {
                kts.show_loader('hide');
                console.log(data);
            }
        });
    }

用户第一次单击按钮时 - 控制台显示如下:

在此处输入图像描述

请注意下面的 URL 和左上角的网络条目:

"http://code.kenstowell.local/".

它调用适当的操作,但返回 302,然后重定向到站点的基本 URL。

用户第二次单击按钮时,它会调用控制器动作。

在此处输入图像描述

请注意此处的 URL:"http://code.kenstowell.local/index/update-password"

这里真正的问题是,在第一次调用/按钮单击时 - 服务器端代码实际上得到了处理,但 XHR 对象返回失败。

如果这是信息过载,我深表歉意。如果您需要提供更多代码/示例,请告诉我。任何帮助表示赞赏。

4

1 回答 1

0

我偶然发现了这个小宝石:

在 JavaScript 中捕获 302 FOUND

显然,ajax 不能很好地处理服务器端重定向。

于 2012-06-25T19:12:42.547 回答