2014-10-06 3 views
2

Я использую javascript для вызова сервера. Javascript код следующий,Response.Redirect и javascript ajax call

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

Что вы хотите делать с 'Response.Redirect (" main.aspx ");' code? Поскольку вы запрашиваете 'lp.aspx', используйте' main.aspx' вместо 'lp.aspx'. –

+0

При щелчке элемента пользователь будет перенаправлен на main.aspx. щелчок элемента подключен к функции javascript cs() (посмотрите на q) – fc123

ответ

0

Простой вы не можете использовать ответ на ur ajax-вызов. использование

window.location 
+0

Жаль, что вы не дали принятого ответа Ариндраму, поскольку он сказал вам, что 2 дня назад – freefaller

2

Вы не можете перенаправить вызов ajax, потому что он ожидает некоторое возвращаемое значение с вызываемой страницы. И если эта страница сама перенаправляет, у нее нет способа сказать, что вызывающая функция перенаправляется, так как она просто ожидает некоторого возвращаемого значения в обратном вызове success.

Чтобы решить эту проблему, вы можете вернуть param. Позвольте сказать { redirect: true }, если условие выполнено. И на success callback, если redirect истинно, то перенаправление с использованием JS - window.location.href="required".

0

Я считаю, что перенаправление не работает, потому что ответ на страницу с javascript закрыт до того, как звонок AJAX даже сделан.

Вместо использования Response.Redirect вы можете отправить обратно строку, содержащую URL-адрес, и в вашем скрипте используйте location.href для перенаправления.