2009-04-26 6 views
1

Je commence à utiliser la jquery $ .ajax() mais je ne peux pas retourner ce que je veux ... j'envoyer ceci:Un peu perdu avec jquery + php + JSON

$(function(){ 
      $.ajax({ 
       url: "graph_data.php", 
       type: "POST", 
       data: "casi=56&nada=48&nuevo=98&perfecto=100&vales=50&apenas=70&yeah=60", 
       dataType: "json", 
       error: 
       function (xhr, desc, exceptionobj) { 
        document.writeln("El error de XMLHTTPRequest dice: " + xhr.responseText); 
       }, 
       success: 
       function (json) { 
        if (json.error) { alert(json.error); return; } 
        var output = ""; 
        for (p in json) { 
         output += p + " : " + json[p] + "\n"; 
        } 
        document.writeln("Results: \n\n" + output); 
       } 
      }); 
     }); 

et mon php est:

<?php 

$data = $_POST['data']; 

function array2json($data){ 
    $json = $data; 

    return json_encode($json); 
} 
?> 

et quand j'exécute ce que je sors avec:

Résultats:

juste comme cela j'avais l'habitude d'avoir dans le php une déclaration echo array2json mais elle a juste rendu le charabia ... Je ne sais vraiment pas ce que je fais de mal et j'ai googlé pendant environ 3 heures Même chose. Aussi, je ne sais pas comment passer des paramètres à la "données:" dans la fonction $ .ajax d'une autre manière, comme obtenir des informations à partir de la page Web, quelqu'un peut-il m'aider s'il vous plaît?


Modifier

Je l'ai fait ce que vous suggérez et imprime les données maintenant, merci beaucoup =) cependant, je me demandais, comment puis-je envoyer les données à la « data: » partie jQuery il prend de, disons que l'entrée d'utilisateur, aussi je vérifiais la documentation php et il dit que je suis autorisé à écrire quelque chose comme:

json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP) 

cependant, si je fais ce que je reçois une erreur disant que json_encode accepte 1 paramètre et je donne 2 ... aucune idée pourquoi? J'utilise php 5.2

+0

dataType: "json" - Conserve les minuscules. – Anthony

Répondre

7

Premièrement: les données que vous passez au script PHP seront en $_POST, pas en $_POST['data']. Ensuite, vous devez appeler la fonction array2json avec des données ... Est-ce l'exemple de code complet?

En outre, je ne suis pas sûr de ce que array2json est censé faire ... pourquoi ne pas appeler json_encode directement?

Pour votre exemple, vous pouvez simplement rendre votre fichier PHP ressembler à ceci:

print json_encode($_POST); 

Enfin, vous devriez obtenir un outil comme Firebug pour déboguer facilement vos appels AJAX.

EDIT:

Pour envoyer des données de l'utilisateur, tout ce que vous avez à faire est d'avoir un form partout dans votre page, puis attraper l'événement submit de celui-ci et serialize les données, ou tout simplement get the value d'un champ de saisie individuel. Ensuite, vous pouvez simplement construire votre requête de données avec, comme une chaîne ou un objet. Il y a aussi le très populaire Form plugin pour jQuery qui rend tout cela plus facile.

La raison pour laquelle vous obtenez une erreur est que le 2ème argument de json_encode n'a pas été ajouté avant PHP 5.3.0. Donc, si vous avez quelque chose de plus tôt que ce n'est pas disponible pour vous.

+0

Ceci est une réponse fantastique!Merci d'avoir répondu à la question et suggéré un moyen d'effectuer le transfert de l'information. C'est un document FAQ/HOWTO. –