302响应后无法将window.location.href设置为哈希

时间:2012-07-15 05:34:56

标签: jquery hashchange

我试图在页面加载时为AJAX控制的Django webapp设置URL片段,类似于页面重定向。

预期的行为是:如果用户加载myapp.com,我会将片段更改为myapp.com/#/default/path,从而触发内容更改。

使用jQuery的当前实现如下:

if (!window.location.hash) {
    window.location.href = (window.location.pathname === "/")
        ? $("html").data("default-hash")
        : hashify(window.location.pathname);
} else {
    $(window).trigger('hashchange');
}

在这种情况下,默认片段作为data {*属性包含在<html>中,而hashify()是一个将/#添加到字符串的函数。我希望能够简单地从服务器返回302重定向,然后将路径名转换为哈希,如下所示:

if (!window.location.hash) {
    window.location.href = hashify(window.location.pathname);
} else {
    $(window).trigger('hashchange');
}

在当前实现中,url按预期行为更改。但是当我尝试第二种方法(使用重定向)时,URI最终为myapp.com/default/path/#/default/path

以前有没有人遇到过这个问题,或者知道问题可能是什么?

谢谢!

0 个答案:

没有答案