2010-01-16 8 views
1

En résumé, j'ai un formulaire qui, lors de la soumission, envoie des données à un script côté serveur pour traiter une fonction, retourner les données au format JSON pour analyser et crachez de nouveau sur la page.

  1. jQuery envoie des données à "createUser.php" via la méthode $.post

    $("#create_submit").click(function(){ 
        $.post("/createUser.php", { 
         create_user_name: $('#create_user_name').val(), 
         create_user_email: $('#create_user_email').val(), 
         create_user_password: $('#create_user_password').val() }, 
         function(data){ 
          alert(data.response); 
         }, "json"); 
    }); 
    
  2. "createUser.php" renvoie les données JSON

    <?php 
    header('Content-type: application/json'); 
    $return['response'] = 'hmm...'; 
    echo json_encode($return); 
    exit; 
    ?> 
    

Peut-être que moi, mais je n'arrive pas à obtenir l'alerte dont j'ai besoin. Que se passe-t-il!?

+0

La publication d'un exemple de sortie JSON serait très utile. De plus, l'alerte est-elle appelée? Ou simplement ne pas sortir ce que vous attendez? – William

+0

c'est mon createUser.php st4ck0v3rfl0w

+0

L'alerte n'est pas appelée du tout ... mais quand je sors le paramètre "json" de la méthode $ .post, l'alerte apparaît – st4ck0v3rfl0w

Répondre

3

Je pense que l'argument data à votre fonction de rappel est déjà les données, et n'a aucun membre response.

Essayez function(data){ alert(data); }

Documentation: jquery.post

+0

pekka, comme je l'ai noté ci-dessus, l'alerte ne s'affiche même pas lorsque j'ai le paramètre "json" dans la méthode $. Post ... mais quand je – st4ck0v3rfl0w

+0

Assurez-vous que vous vérifiez votre journal des erreurs JavaScript. Il se peut que vous receviez une erreur JavaScript lors de l'alerte data.response parce que le paramètre facultatif ne fonctionne pas. – William

+0

Avez-vous regardé l'exemple de publication json dans les docs (en bas)? Si vous spécifiez le type de données, vous n'accédez pas à la réponse.Puisque vous savez que c'est faux, retirez-le de votre exemple, réessayez et mettez à jour votre question si vous avez toujours un problème. Si ce n'est pas ça, il semble que le coupable le plus probable est un json invalide. – tfwright

0

D'après ce que je peux dire de vos réponses, JSON est uniquement lorsque vous faites émis en sortie la requête POST ci-dessus. Si vous effectuez une requête GET normale, cela fonctionne correctement. Pour tester ceci, changez $ .post en $ .get (et effacez les variables create_user_ * si besoin est) et voyez si vous obtenez une réponse alors. Si vous le faites, vous devez vérifier votre fichier createUser.php et voir pourquoi la requête POST ne retourne aucun JSON, mais la requête GET le fait. Il semble que ce soit un problème PHP, pas un problème JavaScript/JSON/jQuery.

Questions connexes