Ajax kullanarak bir servlet çağırmak için $.post()
kullanıyorum ve ardından ortaya çıkan HTML parçasını kullanıcının mevcut sayfasındaki bir div
öğesini değiştirmek için kullanıyorum. Ancak, oturum zaman aşımına uğrarsa, sunucu kullanıcıyı oturum açma sayfasına göndermek için bir yönlendirme yönergesi gönderir. Bu durumda jQuery, div
öğesini oturum açma sayfasının içeriğiyle değiştirerek kullanıcının gözlerini gerçekten de nadir bir sahneye tanık olmaya zorlar.
jQuery 1.2.6 ile bir Ajax çağrısından bir yönlendirme yönergesini nasıl yönetebilirim?
Düşük seviyeli $.ajax()
çağrısını kullanın:
$.ajax({
url: "/yourservlet",
data: { },
complete: function(xmlHttp) {
// xmlHttp is a XMLHttpRquest object
alert(xmlHttp.status);
}
});
Yönlendirme için bunu deneyin:
if (xmlHttp.code != 200) {
top.location.href = '/some/other/page';
}
servlet içine şunları koymalısınız
response.setStatus(response.SC_MOVED_PERMANENTLY);
yeniden yönlendirme için ihtiyacınız olan '301' xmlHttp durumunu göndermek için...
ve $.ajax fonksiyonunda .toString()
fonksiyonunu kullanmamalısınız..., sadece
if (xmlHttp.status == 301) { top.location.href = 'xxxx.jsp'; }
Sorun şu ki çok esnek değil, nereye yönlendirmek istediğinize karar veremiyorsunuz...
servletler üzerinden yönlendirme yapmak en iyi yol olmalı. ama hala bunu yapmanın doğru yolunu bulamıyorum.
Ek olarak, muhtemelen kullanıcıyı başlıklarda verilen URL'ye yönlendirmek isteyeceksiniz. Sonunda bu şekilde görünecektir:
$.ajax({
//.... other definition
complete:function(xmlHttp){
if(xmlHttp.status.toString()[0]=='3'){
top.location.href = xmlHttp.getResponseHeader('Location');
}
});
UPD: Opps. Aynı görev var ama çalışmıyor. Bu şeyleri yapıyorum. Çözümü bulduğumda size göstereceğim.