est là quand même vérifier si une demande entrante est de type Ajax JSON?
J'ai essayé p> mais il n'a pas fonctionné. P> < p> Toute pensée? p> p>
6 Réponses :
Vous pouvez faire un chèque sur l'accepter Param, s'il s'agit du texte / JavaScript à votre parling JSON, s'il s'agit du texte / XML Devinez quoi: P P>
$ _ serveur ['http_accept'] p>
Vous supposez que le programme JavaScript définit correctement les en-têtes de XMLHTTTPRequest, ce qui n'est jamais fait (qui se soucie?). Généralement, le script côté serveur est effectué pour répondre en un seul format et je ne peux voir aucune raison pour laquelle cela devrait être différent.
Il s'agit d'une procédure standard lorsque vous demandez une page ou un service (frapper une URL), vous devez spécifier le type de résultat que vous attendez dans la demande. J'ai travaillé sur de nombreux services Web où l'utilisateur s'attend à des informations sur XML ou JSON afin qu'ils spécifient que dans la demande param. D'autres sages, ils doivent fournir une extension de l'URL Son dire somesite.com/get_user[.xml | .json]. De nombreuses libéralités telles que Jersey, etc. en Java, JQuery et quelques bibliothèques de Curl personnalisées PHP annoncent ces informations dans l'en-tête de la demande (mode de communication standard). sinon passer des paramètres supplémentaires dans chaque demande
Lorsque le navigateur antive la communication avec le service de n'importe quel site (ou l'URL), ils spécifient text / html code>, jQuery do Set
application / json code> dans l'en-tête de demande si le type de données est défini sur JSON Comme
DataType: 'json' code> et ci-dessus est comme suit
application / json, texte / javascript, * / *;; q = 0.01 code> L'URL ouverte du navigateur affichera
texte / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, * / *; q = 0,8 code>
Essayez JSON_Decode () P>
Vous pouvez vérifier l'en-tête X-REQUÉTH-AVEC code>, certaines bibliothèques, telles que jQuery le définit sur
" xmlhttprequest " code>.
$isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';
Dans votre lien, JQuery utilise 'x-demandé-with' non "x_requeste_with". Alors ne ferions-nous pas $ is_ajax = ($ _Server ['x-demandé-with'] == 'xmlhttprequest'); code> à la place?
Vous auriez besoin de définir une en-tête du côté du client. jQuery et autres bibliothèques définissent un X-demandé-with code> en-tête:
Où acceptez-vous des demandes de, exactement, que vous ne sauriez pas?
Vous pouvez avoir une fonction au début du script qui essaie d'importer les données comme JSON ou SIMPLEXML. Si cela attire une erreur, vous savez que c'est l'autre ... p>
À la deuxième pensée, demandez-le de le tester pour être JSON, SimplexML lancera une erreur pour des tonnes de raisons. P>
$json_request = (json_decode($request) != NULL) ? true : false;
Vous pouvez toujours définir un en-tête supplémentaire précisant cela ou utiliser une variable arbitraire pour indiquer les demandes JSON. p>
Stackoverflow.com/Questtions/1322863/...
Remarque, le mime est l'application / JSON.