重定向到新页面作为对 XHR 发布请求的响应

Redirect to new page as response to XHR post request

本文关键字:请求 响应 布请求 新页面 XHR 重定向      更新时间:2023-09-26

我没有办法修复javascript。该页面使用 XHR

function openPOST(url, params, callback) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("POST", url, true);
        xmlhttp.setRequestHeader('Content-Type', "application/x-www-form-rlencoded");
        xmlhttp.send(params);
        xmlhttp.onreadystatechange = function() {
            if (this.readyState === 4) {
                if (xmlhttp.status === 200) {
                    if (callback) callback(this.responseText);
                }
            }
        }
        return xmlhttp;
    };

在页面加载时,使用以下查询

document.addEventListener('DOMContentLoaded', function () {
        ...
        function go() {
            openPOST("/home/someaction", "query=123", function (count) {
                document.querySelector("h1").textContent = count;
            });
        }
        ...
        go();
        ...
});

是否可以实现这样的代码来 ASP.NET MVC,以便他移动到另一个页面,但没有将结果放在另一个页面中?

我需要将 POST 请求重定向到页面到其他地址。

下面的代码将结果插入到document.querySelector("h1").textContent

public void someaction() {
            Response.Status = "307 Temporary Redirect";
            Response.AddHeader("Location", "http://example.com");
        }

编辑:用户在他的浏览器中打开了我们网页的旧版本。这个网页对我们的网络服务器进行ajax调用,并将响应作为字符串插入(没有eval(),js代码不起作用)。有什么方法可以从我们的服务器重新加载此网页吗?

在你的操作方法上,你可以通过返回一个Javascript结果来调用Javascript代码。

[HttpPost]
public ActionResult someaction() {
    if (Request.IsAjaxRequest()) {
        return JavaScript("document.location.href='"http://www.google.com'"");
    } else {
        return Redirect("http://wwww.google.com");
    }
}