【问题标题】:Javascript redirect not working ASP.NETJavascript 重定向不起作用 ASP.NET
【发布时间】:2023-03-14 13:20:02
【问题描述】:

我目前正在创建一个网站。我被卡住的问题是我无法使用 Javascript 重定向到另一个 ASPX 页面。这是我的代码:

<asp:Button ID="Save" runat="server" Text="Schedule" CssClass="vs-btn mT10" OnClientClick="return SendFormValuesForXml(); return false;" />

上面的 Javascript 函数执行 AJAX 调用,成功后我重定向到正在执行几件事的另一个页面。 AJAX 调用在这里:

var responseString = "";

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "Default.aspx/MakeXml",
    dataType: "json",
    data: "{'data':'" + stringToSend + "'}",
    async: false,
    cache: false,
    success: function (result) {
        debugger;
        window.location.reload(true);
        var valuationUrl = window.location.protocol + "//" + window.location.host + "/ValuationList.aspx";
        window.location.assign(valuationUrl);
        return false;
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("Status: " + textStatus); alert("Error: " + errorThrown);
    }
});

现在一切正常,除了成功函数中的重定向。知道是什么干扰了javascript吗? 附加信息:

  1. 没有更新面板在该页面或网站的任何其他页面上工作。
  2. 浏览器没有抛出任何错误,除了错误的 Chrome 'jquery.min.map' not found 错误。

到目前为止我所尝试的:

  1. document.location.replace(valuationUrl);
  2. location.href =valuationUrl;
  3. $(location).attr('href',valuationUrl);

堆栈溢出中提到的所有其他选项都是 this link

更新:我采用了错误的解决方案 在做了很多事情之后,比如拿一个不可见的按钮并在其点击重定向页面上运行服务器端功能和其他事情,所有这些都失败了。 我所做的是将隐藏字段设置为 0,然后将其值更新为 1。稍后当同一页面加载时,我检查其值是否为 1,因此我强制重定向到下一页。

【问题讨论】:

  • 你可以使用window.location.href = "/valuationlist.aspx"。你不需要做任何协议的东西。
  • 不,这不起作用。我应该删除reload()吗?
  • 是的,这应该是成功块下唯一的代码行(除非您在重新加载之前还需要做其他事情)。
  • 这一行怎么样:var valuationUrl = window.location.protocol + "//" + window.location.host + "/ValuationList.aspx"; 我这样做是为了在网站上线时,它可以有 HTTP 或 HTTPS,以及任何 URL/主机。
  • 你确定成功函数真的在运行吗?

标签: javascript jquery html asp.net ajax


【解决方案1】:

尝试window.location = valuationUrl;-- 如果它有效,那么您将遇到安全违规,因为您要重定向到的域与重定向的域不同。

Mozilla Developer Network Location.Assign

Location.assign() 方法使窗口加载并显示指定 URL 处的文档。

如果由于安全违规而无法进行分配,则会引发 SECURITY_ERROR 类型的 DOMException。如果调用该方法的脚本的来源与 Location 对象最初描述的页面的来源不同,就会发生这种情况,主要是当脚本托管在不同的域上时。

Mozilla Developer Network Location.Replace

Location.replace() 方法将当前资源替换为提供的 URL 中的资源。与 assign() 方法的区别在于,在使用 replace() 之后,当前页面将不会保存在 session History 中,这意味着用户将无法使用返回按钮导航到它。

如果由于安全违规而无法进行分配,则会引发 SECURITY_ERROR 类型的 DOMException。如果调用该方法的脚本的来源与 Location 对象最初描述的页面的来源不同,就会发生这种情况,主要是当脚本托管在不同的域上时。

【讨论】:

  • window.location 不起作用。我试过了,但它仍然没有锻炼。 location.assign()location.replace() 已被使用。但是执行后我找不到任何错误。
【解决方案2】:

window.location.reload(true) 导致页面从服务器重新加载。我很确定这意味着它不会继续执行该功能的其余部分。

【讨论】:

  • 我以前没有。当我试图找到解决我的问题的方法时,我发现了它。我只是补充说可能是一些缓存可能正在做一些问题。所以添加它,以强制从服务器加载 Javascript。没有它也无法加载页面。
【解决方案3】:

试试这个。

    success: function (result) {
        var valuationUrl = window.location.protocol + "//" + window.location.host + "/ValuationList.aspx";
        window.location.href=valuationUrl;
        return false;
    },

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 2014-01-19
    • 2014-01-09
    • 2017-10-06
    • 2014-09-29
    • 1970-01-01
    • 2019-02-04
    • 2013-08-16
    相关资源
    最近更新 更多