Voici ce que j'ai essayé:jQuery - Ajax soumettre des données JSON GET
JS:
$.ajax({
type: 'GET',
contentType: 'application/json; charset=UTF-8',
data: JSON.stringify({ data: 'bla' }),
dataType: 'json',
success: function(data) {
alert(data);
},
error: function(data) {
alert('error: ' + data);
}
});
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{
$data = json_decode(file_get_contents('php://input'));
echo json_encode($data);
}
?>
Sortie:
null
Si vous remplacez la GET avec un POST au lieu de cela fonctionne comme un charme. "Pourquoi ne pas simplement utiliser le POST à la place?", J'utilise POST pour effectuer des insertions dans la base de données. J'ai une petite idée le sentiment que ce serait peut-être parce qu'il veut avec force les données GET dans ce type de format: [email protected]&firstname=Bob&lastname=Mctest
. Je ne sais pas pourquoi mais parce que le type de contenu est défini comme application/json, cela est un peu perplexe. Juste pour ajouter quelque chose de ma dernière modification, le php://input
est vide autrement dit il n'est pas envoyer de données à elle, mais il fonctionne toujours sans problèmes en utilisant GET boucle du terminal.
Quand je lance une commande GET boucle à partir du terminal en utilisant le type de contenu JSON cela fonctionne comme un charme et recrache les données sans problème à savoir curl -v -X GET -H "Content-Type: application/json" -d '{"data":"bla"}' http://codes.local/test.php
Je ne sais pas comment utile ce sera mais j'ai trouvé un site PHP Fiddle et collé l'exemple de code là-bas juste pour le rendre plus facile pour tout le monde, voici le lien: http://phpfiddle.org/main/code/u4b-xkh
Merci beaucoup pour toute aide.
Edit: corrigé l'erreur d'orthographe dans « application/json » a souligné Silverblade et mis à jour le lien PHP Fiddle (sortie null persiste encore en d'autres termes ne fonctionne toujours pas). Le problème, que je l'ai dit plus haut, est le php://input
est en fait vide il n'y a pas de données là-dedans du tout quand transmis via jQuery - aucun problème lorsqu'il est utilisé en conjonction avec GET boucle.
Édition2: Je n'utilise pas IIS, merci à robertdeniro (heh) de l'avoir signalé.
Salut Silverblade Merci pour votre réponse. J'ai corrigé cette faute de frappe et mis à jour le violon PHP et tout le reste, désolé pour l'erreur embarrassante là-bas, je copiais une version simplifiée de mon code pour qu'il soit plus facile de passer. Pour info, vous n'avez pas besoin de spécifier une URL si elle est postée sur elle-même. – adamj