Ben bir form ile bir web sayfası var. Kullanıcı formu gönderdiğinde, ben sunucu tarayıcı form eylemi farklı bir sayfaya yönlendirme yapmak istiyorum. Şu anda, ben bir 302 durum kodu göndermek için PHP'nin header işlevini kullanarak yapıyorum. Bu çalışıyor.
Ben sunucu üzerinde sayfa olursa olsun (Javascript olmadan) veya Ajax ile normalde sunuldu olsun, aynı şekilde tarayıcı yönlendirmek yapmaya çalışıyorum. Ben konumu başlığında ne olursa olsun URL için pencere konumu ayarlayarak bu yapmaya çalıştım. JQuery kullanarak ve böyle bir çağrı yapıyorum:
$.ajax({
url: this.action,
type: "POST",
data: getFormData(this),
complete: function(request) {
window.location.assign(request.getResponseHeader("Location"));
}
});
Ancak, bu işe yaramadı. Düşündükten sonra, ben bu çok şaşırtıcı olmadığını fark etti. Bir Ajax isteği, tarayıcı şeffaf readyState değiştirmeden önce böyle 302 kodları gibi yanıtları yönlendirmek işlemek gerekiyordu. Komple fonksiyon çalıştığında, nihai hedef Location başlığı arıyor ve bulgu değildir.
Bir deneme olarak, sonra bir Location başlığı ile bir 200 durum kodu gönderme çalıştı. Ben Ajax isteği denedim ve gayet iyi çalıştı. Ben olmayan Ajax göndermek yaptım Ancak, bu işe yaramadı. Tarayıcı form action sayfasına gitti ve Yer başlığını göz ardı edilmiş gibi, orada kaldı.
Sunucu biliyor veya isteği bir Ajax isteği olup olmadığını bakım zorunda kalmadan, her iki durumda da aynı yönlendirme sayfası yapmak için herhangi bir yolu var mı?
Bu konularda durumda, ben benzer sonuçlar ile farklı tarayıcılarda (IE8, IE7, IE6, Firefox 3.5, Chrome) her zaman formu çalıştı. Ayrıca, ben IE 2083-karakter URL uzunluğu sınırı içine çarpmasını önlemek için bir post isteği yapıyorum.