2011-01-11 11 views
10

İsteğin ajax olup olmadığını kontrol etmem gerekiyor. $request->isXmlHttpRequest() düzgün çalışır, ancak yürütme sırasında bir yönlendirme varsa, bu yöntem yanlış döndürecektir. Bu durumda talebin ajax olup olmadığını başka nasıl kontrol edebilirim? p.s. ajax, jQuery

cevap

8

tarafından başlatılmışsa Projenizde veya başka bir harici uri'de farklı bir uygulamaya yönlendiriyorsanız, ilk istekte isXmlHttpRequest doğruysa, ileriye doğru kullanın.


iyi X-Requested-with başlığının ve başlık bir tarayıcı uygulamaları (veya tüm orijinal başlıkları) içerisinde değere karşı bu yöntem kontrolleri (FF bir isim) yönlendirilen istek/yazılır bırakılır.

Bir geçici çözüm olarak, isteğin kendisinde bir değişken kullanabilirsiniz. Mevcut sf_format altyapısını kullanabilirsiniz, ancak bunun dahili olarak nasıl çalıştığını bilmediğim için işe yarayıp yaramadığından emin değilim. Eğer kolay bir çözüm gerekiyorsa size "ajax" adlı bir gizli alan oluşturabilir gönderilirken eğer

+0

Kesinlikle, Firefox sorumlu olduğu. Opera'da da aynı şekilde test edildi, iyi çalışıyor. – Dziamid

+0

@Dziamid: Evet, bir hata var, ancak FF4 sürümünü kaçırdı, bu yüzden sabitlenmeden önce en az 4.1 olacak. Ek olarak, bunun dışında başka tarayıcılar da olabilir. Bu yüzden geçici çözümünüzle muhafazakar olarak oynayacağım. Muhtemelen eğer mümkünse, yönlendirme ile denklemi tamamen kaldırabilirim. – prodigitalson

+0

Kafamı buna karşı yasaklıyorum ama boşuna. Açıktır ki, bir istek nesnesine özel bir istek parametresi ayarlamak yardımcı olmaz - bir yönlendirme üzerinde nettirler. Sf_format kullanmak karmaşık bir yoldur (çünkü symfony sonra indexSuccess.sf_format.php gibi farklı şablonlar arar). – Dziamid

2

, ben,

http://mywebsite.com/loadsomething.php?ajax=true ve

$isAjax = $request->getParameter('ajax'); 

gibi bir URL kullanın önermek Ya olacaktır. Tabii ki bunlar probleminizi sonsuza kadar çözmeyecek, ancak en kısa sürede buna ihtiyacınız varsa hızlı bir çözüm olarak çalışacaktır.

Yalnızca bir yönlendirmeyi desteklemek istiyorsanız, bir flash değişkeni de oluşturabilirsiniz.

Aksi takdirde symfony kaynak koduna bakabilirsiniz: hat 518 üzerinde

http://trac.symfony-project.org/browser/branches/1.4/lib/request/sfWebRequest.class.php 

istek nesne HTTP üstbilgilerinden ajax olmak isteği tanımlayan görebilirsiniz. Bu yüzden, yönlendirme sonrası aynı HTTP başlıklarının neden düzgün ayarlanmadığını öğrenmelisiniz.

+0

, çünkü bunlar @prodigitalson gibi, gizli tarayıcılar tarafından temizlenir (başka bir cevaba bakınız). Sorunun Symfony ile ilgisi yok. – Dziamid

+0

Hayır, Symfony ile bir ilgisi olmadığını söylemedim. Sadece sorunu takip etmeye nerede başlayacağımı söyledim. – Aston

6

Bazı js kütüphaneleri juste betiğinizde bu eklenti, başlıklarda XmlHttpRequest değerini göndermez:

xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");