我正在使用javascript来调用服务器。 javascript代码如下,
function cs() {
alert("");
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "lp.aspx?pb=true", true);
xmlhttp.send();
}
我的服务器代码正在关注
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["pb"] != null)
{
Response.Redirect("main.aspx");
}
}
问题是我的Response.Redirect无法使用我的ajax调用。那是为什么?
答案 0 :(得分:2)
您无法重定向ajax调用,因为它需要从调用页面返回一些值。如果该页面本身重定向,则无法告诉调用函数重定向,因为它只需要success
回调中的一些返回值。
所以要解决此问题,如果条件满足,您可以返回param
让我们说{ redirect: true }
。在success
回调中,如果redirect
为真,则使用JS重定向 - window.location.href="required"
。
答案 1 :(得分:0)
我认为重定向不起作用,因为在进行AJAX调用之前,关闭了带有javascript的页面的响应。
您可以发送回包含该网址的字符串,而不是使用Response.Redirect,并在您的脚本中使用location.href进行重定向。
答案 2 :(得分:0)
简单的你不能在你的ajax调用上使用响应。使用
window.location