Frage

Ich habe gerade die Welt von jquery und ziemlich neu in Javascript, trete in einen kleinen Javascript-Schnipsel too.I habe wie folgt: -

<script type="text/javascript">
 $(function(){
    $('a').click(function(event){
        event.preventDefault();
        $.get('/_add_navigation_',function(response){
        $('#themaincontents').html(response);
        })
   })
</script>

Der HTML-Code sieht aus wie folgt: -

 <a href="?toaddnavigation">CLICK Me</a>
 <div id="themaincontents"></div>

Auf der Serverseite Ich habe eine xhr Headerprüfsequenz durch so etwas wie

 if request.is_xhr: send response else:redirect somewhere

Nun, während dieser Code gut auf Chrome und Opera funktioniert, auf Firefox ist es ein wenig seltsam verhält. Der Server nicht die reponse zurückschicken eher tut eine Umleitung. Das heißt, sagt er, dass es keine xhr Header ist. Warum sollte dies geschehen, während auf den beiden anderen Browsern ist es gut funktioniert. (Ich bin mit Firefox 3.6.12) Update-Just hatte einen Blick auf den Request-Header von Firefox und ich finde keine X-Requested-With: XMLHttpRequest-Header, aber es ist in Chrom)

War es hilfreich?

Lösung

Nicht alle Browser senden die gleichen Header, und Sie können nicht auf sie verlassen, konsistent in allen Browsern zu sein. Der einfachste Weg ist, sich nicht auf den Browser, etwas zu schicken, aber manuell selbst etwas an:

$.get('url', {
    xhr: 'yes' // add this extra parameter here
}, function(){

});

dann prüfen, für den GET-Variable auf dem Server statt einem Header, der nicht von einem Browser gesendet wird oder nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top