Y at-il un moyen de vérifier si une requête entrante est de type AJAX JSON?PHP vérifie si la requête entrante est de type JSON
J'ai essayé
if(($_SERVER['REQUEST_METHOD']=='JSON'))
{
}
Mais cela n'a pas fonctionné.
Des pensées?
Y at-il un moyen de vérifier si une requête entrante est de type AJAX JSON?PHP vérifie si la requête entrante est de type JSON
J'ai essayé
if(($_SERVER['REQUEST_METHOD']=='JSON'))
{
}
Mais cela n'a pas fonctionné.
Des pensées?
Où êtes-vous accepter des demandes de, exactement, que vous ne savez pas?
Vous pouvez avoir une fonction au début du script qui tente d'importer les données au format JSON ou simplexml. Si elle attrape une erreur, vous savez que c'est l'autre ...
À la réflexion, faites-le tester pour être JSON, simplexml va lancer une erreur pour des tonnes de raisons.
$json_request = (json_decode($request) != NULL) ? true : false;
Vous pouvez faire un chèque à l'accepter param, si elle est text/javascript de votre parler JSON, si elle est text/xml devinez quoi: P
$ _SERVER [ 'HTTP_ACCEPT']
Vous supposez que le programme JavaScript va définir les en-têtes de XMLHttpRequest correctement, ce qui n'est jamais fait (qui s'en soucie?). Généralement le script côté serveur est fait pour répondre dans un seul format, et je ne vois pas pourquoi il devrait être différent. – Havenard
Il s'agit d'une procédure standard lorsque vous demandez une page ou un service (en tapant une URL), vous devez spécifier le type de résultat que vous attendez dans la requête. J'ai travaillé sur de nombreux services Web où l'utilisateur attend des informations en XML ou en JSON, donc ils spécifient cela dans param. autrement, ils doivent fournir une extension de l'URL, disons somesite.com/get_user[.xml | .json]. De nombreuses libéralises comme Jersey etc en Java, jQuery et quelques bibliothèques curl personnalisées php ajoutent cette information dans l'entête de la requête (Standard way of communication). sinon, passer un paramètre supplémentaire dans chaque requête –
Lorsque le navigateur appelle la communication avec le service (ou URL) d'un site, ils spécifient 'text/html', jQuery définit' application/json' dans l'en-tête de la requête si dataType est défini sur json comme ' dataType: 'json'' et au-dessus de la variable est comme suit 'application/json, text/javascript, */*; q = 0.01' L'URL ouverte du navigateur affichera 'text/html, application/xhtml + xml, application/xml; q = 0.9, image/webp, */*; q = 0.8' –
Essayez json_decode (
Vous pouvez vérifier l'en-tête X-Requested-With
, certaines bibliothèques, comme jQuery le définir à "XMLHttpRequest"
.
$isAjaxRequest = $_SERVER['X_REQUESTED_WITH'] == 'XMLHttpRequest';
Dans votre lien, jQuery utilise ' X-Requested-Avec 'not' X_REQUESTED_WITH '. Ne ferions-nous pas '$ is_ajax = ($ _SERVER ['X-Requested-With'] == 'XMLHttpRequest');' à la place? – Justin
Vous devez définir un en-tête côté client. jQuery et d'autres bibliothèques définir une x-requested-with
tête:
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
echo "Ajax request";
}
Vous pouvez toujours définir un en-tête supplémentaire spécifiant cela, ou utiliser une variable arbitraire pour indiquer les demandes JSON.
http://stackoverflow.com/questions/1322863/quest-que-la-best-way-inside-a-controller-to-know-if-the-request-is-a-xmlhttp-on – bobince
Note , le mime est application/json. – Dykam