Jquery, X-Requested-With = XMLHttpRequest dans l'en-tête de la requête ajax?
QUELQUES FOIS il n'y a pas de X-requested-with-tête, parfois il est.
J'ai vérifié dans firebug et a constaté que, je ne sais pas pourquoi.
Alors, quand je demande d'utilisation.is_ajax dans django, il échoue parfois.
Ce que quelqu'un sait comment résoudre ce problème?
OK, maintenant c'est arrivé à nouveau.
J'ai ouvert la page et puis à gauche pour le souper pour un long moment, quand je suis arrivé, c'est arrivé à nouveau. J'ai enregistré l'en-tête de requête dans firbugs:
Demande avec X-requested-with:
Hôte localhost:8000
l'Agent Utilisateur de Mozilla/5.0 (Windows; U; Windows
NT 5.2; zh-CN; rv:1.9.1.5) Gecko/20091102
Firefox/3.5.5
Accepter texte/html, /
Accept-Language zh-cn,zh;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
X-requested-with XMLHttpRequest
Refererhttp://localhost:8000/gallery/
Cookie xxx
Demande sans X-requested-with:
Hôte localhost:8000
L'Agent Utilisateur De Mozilla/5.0 (Windows; U;
Windows NT 5.2; zh-CN; rv:1.9.1.5)
Gecko/20091102
Firefox/3.5.5
Accepter text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language zh-cn,zh;q=0.5 Accept-Encoding gzip,deflate
Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Refererhttp://localhost:8000/gallery/
Cookie xxx
source d'informationauteur Dong | 2009-12-11
Vous devez vous connecter pour publier un commentaire.
Fournir plus d'informations. Ce genre de requêtes ajax-vous?
Si vous êtes à la soumission de formulaires qui contiennent un champ de saisie de type de fichier qui est le plus susceptible de la raison qui l'en-tête est manquante.
Que vous ne pouvez pas soumettre un fichier avec l'ajax, toutes les frameworks javascript utiliser le "caché " iframe" truc en interne pour faire le travail pour vous.
Vérifier ce post avec un problème similaire et ma réponse.
X-requested-with-tête pas jquery plugin ajaxForm
Sinon il devrait y avoir aucune raison pour un tel comportement de la part de jQuery comme toujours, il définit l'en-tête. Si le problème n'est pas lié à un fichier-les entrées, s'il vous plaît poster pertinentes codesnippets
J'ai été confronté à ce problème avec la version 1.6.2, en particulier lorsque la page a été inactif pendant un moment. L'expansion de la gigue de la réponse, c'est l'ajout de la X-requested-with de manière redondante pour chaque demande dans un seul endroit. J'ai mis cela dans ma page principale. Espérons que cela fonctionne.
Je viens d'avoir le même problème moi-même, et je l'ai corrigé en s'assurant il y avait une barre oblique après mon url. Ainsi, au lieu de:
utilisation:
Dirait qu'il a été un moment depuis que vous avez posté ce mais peut-être que ça va aider!
Essayer également, y compris le X-requested-with dans le cadre de la Post valeurs.
Et en le combinant avec la gigue de la réponse. Espérons que cela aide!
MODIFIER LES NOTES:
Je m'excuse je ne sais pas ce que je pensais. Je dois avoir mal lu la question quand j'ai posté.
Cette question est pour Python django cadre. Pas pour ASP.NET MVC.
J'ai posté cette réponse parce que de la ASP.NET MVC est un comportement basé sur le code source suivant.
ASP.NET MVC Code Source
Regarder la AjaxRequestExtensions.cs classe dans le ASP.NET MVC source. http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/60c2f18ed84838b1b3da671536a7a40033e67b0d#src/System.Web.Mvc/AjaxRequestExtensions.cs.
Documentation MSDN sur HttpRequestBase.Article Propriété
Par conséquent,
request["X-Requested-With"]
va chercher les clés dans tous les endroits suivants:Donc, si vous incluez le
X-Requested-With=XMLHttpRequest
paire clé-valeur en tant que partie de la HTTP POST comme je le fais dans l'AJAX de jQuery appel, ASP.NET MVC examinera la Requête HTTP comme AJAX Requête HTTP.La raison je l'ai eu c'était parce que je prenais un élément avec mon AJAX gestionnaire d'événement attaché, le clonage, puis ajouter le nouvel élément à mon document. Pour une raison quelconque, cela signifie que l'événement attaché à l'élément nouveau ne serait pas la traiter comme une normale à une requête ajax (Accept:text/html au lieu de l'application/json, pas de X-requested-with etc.)
Pour résoudre ce que je n'ai fait changer le cas de jQuery nouvelle équivalent de
live()
(pas sûr de ce qu'ils appellent maintenant). Donc, à partir de::
cela peut ne pas être LA réponse, mais j'ai été griffer de me crever les yeux pour un couple d'heures avant de comprendre que mon erreur a été assez osseuse de la tête. (Ce qui était en train de me tuer, c'est qu'il a été de travailler sur ma boîte de dev, mais pas dans la production, et je ne comprends toujours pas pourquoi il en est ainsi, mais...)
Assurez-vous que le gestionnaire d'événements est vraiment attaché! Si il n'y a pas
X-Requested-With
en-tête, il est peut-être pour une bonne raison! J'ai eu une forme dont l'attribut action est que l'url est correcte, et mon bouton d'envoi de l'événement "click" disaitevent.preventDefault()
et puis l'appel de$.post(...)
yadda yadda. Problème, c'est que l'élément DOM a été remplacé en tant que le résultat de certains autres xhr activité, et son gestionnaire d'événement était de s'envoler avec elle. Le formulaire a été soumis comme un simple vieux POST, pas ajax, donc pas d'en-tête.Donc, plutôt que de
besoin de quelque chose comme
Pour en savoir plus: https://learn.jquery.com/events/event-delegation/