2009-07-26 11 views
1

J'écris certaines fonctionnalités en utilisant jQuery que je gère normalement avec un rafraîchissement de page/soumission de formulaire.jQuery ajax problems

Fondamentalement, je soumets un formulaire en utilisant ajax de jQuery.

<html> 
<head> 
<script type="text/javascript" src="js/jquery-1.3.2.js"></script> 

<script type="text/javascript"> 

$(document).ready(function(){ 


    $("#show-comment-form").click(function(event){ 
     var ret = $.post("post.php", $("#comment-form").serialize(), "", "html"); 
     $("#theComment").html("<strong>" + ret +"</strong>"); 
    }); 
}); 


</script> 

</head> 
<body> 
Testing Stuff 
<br /><a href="#" id="show-comment-form">Insert New Message</a><br /> 

    <div id="comment-form"> 
     <form name="form" id="form"> 
      <span>Enter Your Question Here</span> 
      <textarea id="comment" name="comment"></textarea> 
     </form> 

    </div> 

    <p id="theComment"> 

    avsailable 
    </p>  


</body> 

</html> 

L'objet renvoyé est un XMLHttpRequest. Est-ce que je manipule cet objet ou est-ce quelque chose dont je n'ai probablement pas besoin. Mon problème est que je souhaite qu'un utilisateur publie une réponse en utilisant un formulaire sur une page Web, mais le fasse sans recharger la page et ajoute un préfixe html au début de toutes les autres réponses de l'utilisateur. La page sur laquelle le formulaire est posté imprime du code HTML, mais je ne peux pas obtenir ce code HTML sur la page, car la réponse est un objet XMLHttpRequest. Je suis un peu perdu. Quelqu'un peut me diriger dans la bonne direction?

Répondre

3

Vous devez utiliser le paramètre de la fonction callback:

$("#show-comment-form").click(function(event){ 
    $.post("post.php", $("#comment-form").serialize(), function(ret){ 
     $("#theComment").html("<strong>" + ret +"</strong>"); 
    }, "html"); 
}); 

Cette fonction sera exécutée lorsque la requête asynchrone se termine, et son premier paramètre est les données renvoyées par la serveur.

2

spécifier une fonction en tant que troisième paramètre et les données doivent être retournées dans un rappel.

var ret = $ .post ("post.php", $ ("# commentaire-forme") serialize (), fonction (données) { $ (data) .appendTo ('body'); });

Vous ne devriez pas avoir besoin d'interagir avec l'objet XHR. Pour plus d'informations:

http://docs.jquery.com/Ajax/jQuery.post