2012-04-04 14 views
13

Bir eylem gerçekleştirmek için bir Ajax POST gönderen bir bağlantım var. Kullanıcı henüz giriş yapmadıysa, eylem yöntemi giriş sayfasına 302 yönlendirmesini döndürür. Bu olursa, yönlendirmeyi yakalamak istiyorum, böylece giriş formunu bir ışık kutusunda görüntüleyebilirim. Ancak jQuery, yönlendirmeyi iade etmeden veya geri arama işlevini çağırmadan yönlendirmeyi izler gibi görünmektedir. Aşağıdaki kodda, 302 yönlendirmesi uyarısı hiçbir zaman çağrılmaz ve dataFiler işlevi çağrıldığında, veriler giriş sayfasının içeriğidir.jQuery ajax, bir gönderinin ardından bir yönlendirmeyi izlemekten nasıl korunur?

Sayfanın bir 302 yönlendirmesi ve farklı bir eyleme dal gönderdiğini nasıl görebilirim?

$.ajax(url, 
     { 
      data: postArguments, 
      type : "POST", 
      success: function (data) { alert(' success function'); }, 
      statusCode: 
      { 
       302: function() { alert(' received redirect 302'); }, 
       301: function() { alert(' received redirect 301'); } 
      }, 
      dataFilter: function (data, type) { alert('got data ' + data); return data; } 
     }); 

cevap

11

Bu, jQuery ile sınırlı değildir, ancak JavaScript'in kendisi ile; JavaScript'te bir AJAX isteğinde bir yönlendirme tespit etmenin bir yolu yoktur; XHR tarayıcısı, the spec'a göre otomatik olarak büyülü ve görünmez biçimde yönlendirmeleri takip eder.

En iyi seçenek, sunucu kodunuza detect an AJAX request ("HTTP_X_REQUESTED_WITH" başlığı) eklemek ve JavaScript'inizdeki anonim bir kullanıcıyı algılamak ve uygun şekilde işlemek için özel bir yanıt vermek olacaktır.

İlgili konular