【问题标题】:Redirect an asp page to another URL将一个 asp 页面重定向到另一个 URL
【发布时间】:2016-07-13 05:14:19
【问题描述】:

我有一个没有 action 属性的 asp.net 表单,提交将由 ajax 处理,如下所示。

$.ajax({
                url: "home2.aspx/DoSubmit",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: '{x: "' + $("#x").val() + '",y: "' + $("#y").val() + '"}',
                dataType: "json",
                success: function (result)
                {
                    alert("success...");
                },
                error: function (xhr, status) {
                    alert("Error", status);
                }
            });
            return false;
        });

在为 ajax 调用提供相关响应后的代码中,我想将 asp.net 页面重定向到另一个 URL(甚至是不同的域)以及我在后端拥有的其他参数。我测试了这个方法,创建了 HttpWebRequest 但不起作用。

var postData = (requestParam.ToString());
            var data = Encoding.ASCII.GetBytes(postData);
            HttpWebRequest request;
            try
            {
                request = (HttpWebRequest)HttpWebRequest.Create("https:someDomain");
            }
            catch (UriFormatException)
            {
                request = null;
            }
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream postStream = request.GetRequestStream()
            postStream.Write(data, 0, data.Length);
            postStream.Flush();
            postStream.Close();

这会导致此错误:身份验证失败,因为远程方已关闭传输流。
感谢您的帮助

【问题讨论】:

  • 您在哪一行得到错误?你说你已经返回给ajax调用者了,你返回后怎么做更多的处理?

标签: c# asp.net webmethod


【解决方案1】:

ajax 调用是来自浏览器的 OOB(带外)。它与浏览器导航机制的连接绝对为零。因此,您的重定向将不起作用。

您需要订阅 ajax 成功(和/或失败)事件。在这种情况下,您将通过任意数量的浏览器导航方法(例如window.location)进行客户端重定向。

如果您需要来自服务器的重定向 url,则让您的操作将其作为 ajax 响应的一部分返回。

【讨论】:

    猜你喜欢
    • 2023-02-02
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多