6
votes

JQuery Ajax PHP JSON Problème

Je suis confronté au problème de la réception d'un tableau vide fort> lorsque je fais une demande AJAX de la manière suivante:

Ceci est le code que je suis en train d'exécuter dans JavaScript: p>

{"id_consulta":[{"id":1},{"id":2},{"id":3}]}


0 commentaires

4 Réponses :


2
votes

1
votes

Vous ne décodez pas JSON sur PHP.

Essayez JSON_Decode


1 commentaires

Oui, mais dans son exemple, je pense qu'il venait de souligner que la matrice $ _ POST était vide. Vraisemblablement une fois que les données sont reçues, il aurait besoin d'utiliser json_decode pour faire quelque chose d'utile avec elle.



0
votes

Il y a plusieurs problèmes dans votre code:

  1. Vous déclarez DataType: "JSON" code> Mais le serveur ne renvoie pas JSON, il renvoie un texte brut. Du Documentation : P>

    Le type de données que vous êtes attendez-vous à dos fort> du serveur. Si aucun n'est spécifié, JQuery essaiera intelligemment d'obtenir les résultats, basé sur le type MIME de la réponse (un type MIME XML produira XML, dans 1,4 JSON produira un objet JavaScript, dans le script 1.4 exécutera le script et quoi que ce soit sinon sera retourné comme une chaîne). P> blockQuote> li>

  2. 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>

    $data = json_decode($_POST['json']);
    


2 commentaires

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.



0
votes

finalement fait ça marche!. Il est allé comme ceci:

JavaScript: xxx

php: xxx

note que je devais utiliser "Stripslashes "Puisque la chaîne JSON avait des barres obliques pour le" caractère.

Merci à tous pour toute votre aide, j'espère que cela aide quelqu'un d'autre.


1 commentaires

Eh bien, cela a fonctionné, mais vous auriez pu simplement dire Data: mjson et pas besoin de mentionner processdata , pas besoin de le convertir en JSON avec var sjson = $ .tojson (mjson.id_consulta); . Vous auriez pu simplement écrire data: mjson et supprimer paramètre processdata .... à la fin de PHP, vous recevrez directement une matrice dont vous n'avez pas besoin décodage ni stripslash