0

我在我的网站上使用了 jquery-1.8.0.min.js,在某些情况下我需要进行重定向。

我正在尝试这个:

$('<div></div>').appendTo('body')
    .html('<div><h4>Some text....</h4></div>')
    .dialog({
        modal: true,
        title: 'Dialog title...',
        zIndex: 10000,
        autoOpen: true,
        width: 'auto',
        resizable: false,
        draggable: false,
        buttons: {
            Ok: function () {
                $(this).dialog("close");
                var loc = window.location;
                var currentURL = loc.protocol + '//' + loc.host + loc.pathname;

                var newUrl = loc.protocol + '//' + loc.host + 'Account/LogOn?ReturnUrl=' + urlencode(currentURL);
                $('<div style="dispaly:none;"></div>').appendTo('<body>').html('<a id="loginredirect" href="' + newUrl + ' "><br /></a>');
                $('#loginredirect').click();
            }
        },
        close: function (event, ui) {
            $(this).remove();
        }
    });

但这不起作用:-(所以我试试这个:

$('<div></div>').appendTo('body')
    .html('<div><h4>Some text....</h4></div>')
    .dialog({
        modal: true,
        title: 'Dialog title...',
        zIndex: 10000,
        autoOpen: true,
        width: 'auto',
        resizable: false,
        draggable: false,
        buttons: {
            Ok: function () {
                $(this).dialog("close");
                var loc = window.location;
                var currentURL = loc.protocol + '//' + loc.host + loc.pathname;

                var newUrl = loc.protocol + '//' + loc.host + 'Account/LogOn?ReturnUrl=' + urlencode(currentURL);
                $(window.location).attr('href', newUrl);
            }
        },
        close: function (event, ui) {
            $(this).remove();
        }
    });

但这也行不通...

知道问题出在哪里吗?

谢谢

编辑 1: 如果我尝试 window.location.hrej = newUrl,FF ErrorConsole 向我显示:NS_ERROR_MALFORMED_URI:组件返回失败代码:localhost/Content/scripts/jquery-1.8.0 中的 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIDOMLocation.href]。 min.js

并且浏览器不会重定向到 IE、FF 和 Chrome 中的 newUrl...

4

3 回答 3

5

您不需要为此使用 jquery,只需尝试,

window.location.href = new_url;
于 2012-09-13T13:41:35.933 回答
1

在您的第二个示例中,替换此行:

$(window.location).attr('href', newUrl);

对于这个

window.location.href = newUrl;

那应该做你想做的事。

于 2012-09-13T13:44:13.773 回答
1

newURL/后面缺少尾随loc.host

var newUrl = loc.protocol + '//' + loc.host + 'Account/LogOn?ReturnUrl=' + urlencode(currentURL);
window.location.href = newUrl;
于 2012-09-13T13:57:18.460 回答