2011-05-15 5 views
1

Je ne peux pas récupérer mes données, voici mon code. où est le problème? Merci.jquery ajax post succès retour données

index.php

<script type="text/javascript">  
jQuery(document).ready(function(){ 
    $(".click").click(function(){ 
     var value = $(this).val();// post each click value to another page 
    $.ajax({ 
     url: "post.php", 
     dataType: "html", 
     type: 'POST', //I want a type as POST 
     data: "name="+value, 
     success: function(data){ 
      $("#result").data($data); 
     } 
     }); 
    }); 
}); 
</script> 

<div id="result"></div> 
<a href="#" class="click">tim</a> 
<a href="#" class="click">tom</a> 
<a href="#" class="click">jimmy</a> 

post.php

<?php 
$name=trim(addslashes(htmlspecialchars(rawurldecode($_POST["name"])))); 
$data .='Your name is '.$name; 
$data .='how do you do'; 
echo $data;// how to return all the html in post.php? or return $data part? 
?> 
+0

Ce n'est pas le problème (@Tatu a déjà signalé que pour vous), mais séparément: Vous * aurez * des problèmes à un moment donné si vous n'encodez pas correctement vos données. Vous devez appeler 'encodeURIComponent' sur votre variable' value': 'data:" name = "+ encoderURIComponent (value)' Lorsque vous passez une chaîne pour le paramètre 'data', ** vous en assumez la responsabilité être codé. (Alternativement, laissez jQuery le gérer: 'data: {name: value}'.) –

Répondre

5

Voir le problème?

... 
success: function(data){ 
    $("#result").data($data); 
} 
... 

Vous prenez les données que data mais essayez d'y accéder comme $data, qui est une autre variable, non initialisée.

En outre, vous ne pouvez pas utiliser .val() sur un élément a, utilisez plutôt .html() pour obtenir le code HTML interne. Vous voulez probablement utiliser .html() au lieu de .data() sur #result également.

Sinon, votre exemple semble correct.

2

On dirait que vous avez un signe supplémentaire du dollar sur la variable $data, devrait être:

success: function(data) { 
    $("#result").data(data); 
} 
4

il devrait être:

success: function(data) { 

    $("#result").html(data); 
}