Maison  >  Article  >  développement back-end  >  Que dois-je faire si php ne peut pas recevoir de données ajax ?

Que dois-je faire si php ne peut pas recevoir de données ajax ?

藏色散人
藏色散人original
2020-07-25 10:01:563328parcourir

Solution au problème selon lequel PHP ne peut pas recevoir de données ajax : 1. Ajoutez le code de déclaration comme "Content-Type=application/x-www-form-urlencoded" 2. Sérialisez-le dans une chaîne selon le format convenu par les deux parties.

Que dois-je faire si php ne peut pas recevoir de données ajax ?

Recommandé : "Tutoriel PHP"

Solution au problème selon lequel PHP ne peut pas recevoir la valeur json soumis par la méthode ajax

JS doit spécifier contentType = application/x-www-form-urlencoded, afin que les données json envoyées soient reçues par $_POST de PHP.

La valeur par défaut de contentType dans jQuery : "application/x-www-form-urlencoded" (type d'encodage du contenu lors de l'envoi d'informations au serveur). La valeur par défaut convient dans la plupart des cas, si vous transmettez explicitement un type de contenu à $.ajax() alors il sera définitivement envoyé au serveur (même s'il n'y a aucune donnée à envoyer).

1. Si vous utilisez la méthode post pour envoyer, il doit y avoir une instruction Content-Type = application/x-www-form-urlencoded, sinon php n'analysera pas les données entrantes dans le tableau $_POST. .

déclare une déclaration contentType = application/json, et Ajax ajoute automatiquement une déclaration Content-Type = application/x-www-form-urlencoded. Ces deux déclarations rendront également php confus.

2. Les données envoyées sont {data:jsonData}, qui est un objet js. Même s'il peut être envoyé avec succès, PHP ne pourra pas l'analyser car il ne reconnaît pas l'objet. Toutes les structures de données échangées avec le monde extérieur doivent être sérialisées en chaînes au format convenu par les deux parties

Supposons que votre Js.Ajax puisse convertir les objets js en chaînes au format JSON

et vous Le La déclaration contentType = application/json a également été supprimée

Ensuite, vous pouvez voir l'élément avec cette chaîne JSON comme clé dans $_POST

Si vous insistez pour ne pas vouloir supprimer contentType = application/ json La déclaration

Vous pouvez peut-être utiliser file_get_contents('php://input') pour obtenir le contenu entrant

php://input permet de lire les données brutes du POST. Il exerce moins de pression sur la mémoire que $HTTP_RAW_POST_DATA et ne nécessite aucun paramètre php.ini spécial. php://input ne peut pas être utilisé avec enctype="multipart/form-data".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn