Je suis confronté au problème de la réception d'un tableau Ceci est le code que je suis en train d'exécuter dans JavaScript: p> {"id_consulta":[{"id":1},{"id":2},{"id":3}]}
4 Réponses :
De votre JavaScript, vous devez transmettre les données comme celle-ci, en tant que paires de clés: sur le côté PHP, car $ _/a> est un tableau associatif Vous pouvez ensuite accéder à vos données comme: p>
Hmmm. Avez-vous essayé d'utiliser Firebug pour voir ce qui est en fait envoyé dans la demande postale?
Aussi, pourquoi dites-vous contenttype: "Application / JSON; CHRSTE = UTF-8", CODE> au lieu de
contentType: code> "Application / JSON" `
En fait, vous n'avez pas besoin de spécifier contenttype code>, puisque ce que vous allez poster est une matrice JSON sérialisée qui sera finalement convertie en une chaîne de paires de valeur de clé (JQuery le fait en interne),
contentype code > est utilisé pour dire quel type de données vous envoie ... Dans ce cas, JSON sera converti en une paire de valeurs de clé et sera envoyé dans une chaîne simple ...
DataType: 'Json' code> est plus que suffisant pour qu'il fonctionne
Si vous lisez Ce lien JQuery Ajax Données à envoyer sur le serveur. Il est converti en une chaîne de requête, sinon déjà une chaîne. Il est annexé à l'URL pour obtenir des demandes. Voir Option ProcessData pour empêcher ce traitement automatique. L'objet doit être des paires de touches / de valeur. Si la valeur est une matrice, JQuery sérialise plusieurs valeurs avec la même clé sur la base de la valeur du réglage traditionnel (décrit ci-dessous). Code>
Vous ne décodez pas JSON sur PHP. P>
Essayez JSON_Decode P>
Oui, mais dans son exemple, je pense qu'il venait de souligner que la matrice $ _ POST CODE> était vide. Vraisemblablement une fois que les données sont reçues, il aurait besoin d'utiliser
json_decode code> pour faire quelque chose d'utile avec elle.
Il y a plusieurs problèmes dans votre code:
Vous déclarez Le type de données que vous êtes Je ne pense pas que JQuery puisse transformer vos données avec succès à une chaîne de requête. Vous essayez d'envoyer un tableau d'objets: p>
DataType: "JSON" code> Mais le serveur ne renvoie pas JSON, il renvoie un texte brut. Du Documentation : P>
$data = json_decode($_POST['json']);
Merci pour votre réponse rapide Felix, mais je pense que cela n'a pas fonctionné, j'ai changé ma demande Ajax à ceci: $ .ajax ({type: "post", url: "gettubicaciones.php", données: "json =" + $ .tojson (mjson.id_consulta), processdata: faux, succès: fonction (respeceta) {alerte ("Succès:" + respuesta);}, erreur: fonction (demande, erreur) {alerte ("Erreur:" + Demande .staustext + "." + erreur);}}); Et dans php, j'ai fait ceci: $ m_decoded = json_decode ($ _ POST ["JSON"]); Mais le résultat est maintenant vide, $ m_decoded est vide, tout autre indices?
Je reçois cela dans PHP (JSON codé): [{\ "id \": 0}, {\ "id \": 1}, {\ "id \": 2}] et l'essai de décoder avec json_decode , il retourne "vide". J'essaye ceci: $ m_decoded = json_decode ($ _ POST ["JSON"]); et le résultat n'est rien.
finalement fait ça marche!. Il est allé comme ceci:
JavaScript: p> php: p> note que je devais utiliser "Stripslashes "Puisque la chaîne JSON avait des barres obliques pour le" caractère. P> Merci à tous pour toute votre aide, j'espère que cela aide quelqu'un d'autre. P> P>
Eh bien, cela a fonctionné, mais vous auriez pu simplement dire Data: mjson indicatif> et pas besoin de mentionner
processdata code>, pas besoin de le convertir en JSON avec
var sjson = $ .tojson (mjson.id_consulta); code>. Vous auriez pu simplement écrire
data: mjson code> et supprimer
paramètre processdata code> .... à la fin de PHP, vous recevrez directement une matrice dont vous n'avez pas besoin
décodage code > ni
stripslash code>