我有一个没有动作属性的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();
导致此错误:身份验证失败,因为远程方已关闭传输流。
谢谢你的帮助
答案 0 :(得分:2)
ajax调用是来自浏览器的OOB(带外)。它与浏览器导航机制完全ZERO连接。因此,您的重定向将无效。
您需要订阅ajax成功(和/或失败)事件。在那种情况下,您将通过任意数量的浏览器导航方法(例如window.location
)进行重定向客户端。
如果您需要重定向网址来自服务器,请让您的操作将其作为ajax响应的一部分返回。