Question

Je viens entré dans le monde de jquery et assez nouveau pour javascript too.I un petit extrait de javascript comme ci-dessous: -

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

Les regards html comme ci-dessous: -

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

Du côté du serveur, je fais un contrôle d'en-tête de XHR par quelque chose comme

 if request.is_xhr: send response else:redirect somewhere

Maintenant, alors que ce code fonctionne très bien sur le chrome et l'opéra, sur Firefox, il se comporte un peu bizarre. Le serveur ne renvoie pas le fait plutôt Reponse une redirection. Cela signifie qu'il dit qu'il n'y a pas de tête XHR. Pourquoi cela se produit alors que les deux autres navigateurs, il fonctionne très bien. (J'utilise Firefox 3.6.12) Mise à jour-Just avait un regard sur les en-têtes de demande de Firefox et je ne trouve pas X-requested-Avec: tête XMLHttpRequest, mais il est présent en chrome)

Était-ce utile?

La solution

ne sont pas tous les navigateurs envoient les mêmes en-têtes, et vous ne pouvez pas compter sur eux pour être compatibles entre les différents navigateurs. La façon la plus simple est de ne pas compter sur le navigateur pour envoyer quelque chose, mais envoyer manuellement quelque chose vous:

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

});

puis vérifier cette variable GET sur le serveur au lieu d'un en-tête qui peuvent ou peuvent ne pas être envoyé par un navigateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top