Response.Redirect和javascript ajax调用

时间:2014-10-06 10:29:33

标签: javascript ajax

我正在使用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调用。那是为什么?

3 个答案:

答案 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