Devo verificare se la richiesta è ajax. $request->isXmlHttpRequest()
funziona correttamente, tuttavia se c'è un reindirizzamento da qualche parte durante l'esecuzione, questo metodo restituirà false. In quale altro modo posso verificare se la richiesta è ajax in questo caso? p.s. ajax è avviato da jQuery
risposta
Se non si sta reindirizzando a un'altra applicazione nel progetto o un altro uri esterno, utilizzare invece forward se isXmlHttpRequest è true alla prima richiesta.
bene che metodo controlla contro il valore dell'intestazione X-Requested-with
e in alcune implementazioni browser che intestazione (o tutte le intestazioni originali) sono caduto/sovrascritto dalla richiesta reindirizzata (FF per citarne uno).
Come soluzione alternativa è possibile utilizzare una variabile nella richiesta stessa. Potresti essere in grado di utilizzare l'infrastruttura sf_format
esistente, ma non sono sicuro che ciò funzionerebbe perché non ho familiarità con il suo funzionamento interno.
Se avete bisogno di una soluzione semplice, vorrei suggerire
utilizzare un URL come http://mywebsite.com/loadsomething.php?ajax=true e
$isAjax = $request->getParameter('ajax');
Oppure, se stai scrivendo è possibile creare un campo nascosto denominato "Ajax". Naturalmente questi non risolveranno il tuo problema per sempre, ma funzioneranno come soluzione rapida se ne hai bisogno il prima possibile.
Se si desidera supportare solo un reindirizzamento, è possibile creare anche una variabile flash.
In caso contrario si può guardare il codice sorgente di symfony:
http://trac.symfony-project.org/browser/branches/1.4/lib/request/sfWebRequest.class.php
on line 518 è possibile vedere l'oggetto della richiesta identifica la richiesta di essere ajax dalle intestazioni HTTP. Quindi devi scoprire che dopo il reindirizzamento perché le stesse intestazioni HTTP non sono impostate correttamente.
Alcune librerie js non invia il valore XmlHttpRequest nelle intestazioni, juste aggiungere questo nello script:
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
- 1. TimeZoneInfo.ConvertTimeToUtc issue
- 2. time_ago_in_words issue
- 3. Aggiunta di un'immagine in symfony 2 dal modulo symfony?
- 4. MySQL FULLTEXT index issue
- 5. Youtube iframe wmode issue
- 6. Android GCM time_to_live issue
- 7. UnmarshalException - Namespace Issue?
- 8. TextInputLayout hint overlap issue
- 9. GCM IOS NotRegistered issue
- 10. nginx upload client_max_body_size issue
- 11. TTThumbsViewController + navigationController issue
- 12. libero ASP.NET Issue Tracker
- 13. Powershell EncodedCommand Length Issue
- 14. Blackberry BrowserField Issue -
- 15. HMACSHA1 SSL issue
- 16. Java abstract/extends issue
- 17. sonar 3.1 javascript issue
- 18. Ruby recursion issue
- 19. sklearn LinearRegression.Predict() issue
- 20. Dijkstra's Algorithm Issue
- 21. mail() timeout issue
- 22. Game Center Achievement Issue
- 23. file video download issue
- 24. BinaryWriter Endian issue
- 25. git global config issue
- 26. IE11 z-index issue
- 27. PHP Image Crop Issue
- 28. Entity Framework Performance Issue
- 29. Spree - i18n gem issue
- 30. Asp.net MCV4 framework issue
Esattamente, Firefox è la colpa. Testato lo stesso in Opera, funziona bene. – Dziamid
@Dziamid: Sì, c'è un bug archiviato ma è mancato il rilascio di FF4, quindi sarà almeno il 4.1 prima che sia corretto. Inoltre, ci possono essere altri browser in cui questo accade anche se non sono a conoscenza di altri a portata di mano. Quindi giocherei conservativo con la tua soluzione alternativa. In realtà se possibile potrei rimuovere il reindirizzamento dall'equazione tutti insieme se possibile. – prodigitalson
Sto mettendo al bando la mia testa contro di esso, ma senza successo. Ovviamente, l'impostazione di un parametro di richiesta personalizzato su un oggetto di richiesta non aiuta - sono chiari su un reindirizzamento. Usare sf_format è un modo complicato (perché symfony cercherà quindi modelli diversi, come indexSuccess.sf_format.php). – Dziamid