cj333
cj333

Reputation: 2609

jquery ajax post success return data

I can not get back my data, here is my code. where is the problem? Thanks.

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? 
?>

Upvotes: 2

Views: 55030

Answers (3)

Shiv Om Sharma
Shiv Om Sharma

Reputation: 51

it should be:

success: function(data) {

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

Upvotes: 5

Chris Fulstow
Chris Fulstow

Reputation: 41872

Looks like you've got an extra dollar sign on the $data variable, should be:

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

Upvotes: 3

Tatu Ulmanen
Tatu Ulmanen

Reputation: 124768

See the problem?

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

You take the data as data but try to access it as $data, which is a different, uninitialized variable.

Also, you cannot use .val() on an a element, use .html() instead to get the inner HTML. You probably want to use .html() instead of .data() on #result also.

Otherwise your example seems all right.

Upvotes: 6

Related Questions