2011-05-15 106 views
1

我无法取回我的数据,这里是我的代码。哪里有问题?谢谢。jquery ajax post成功返回数据

的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

这不是问题(@Tatu已经举报过但是分开来说:如果你没有正确编码你的数据,你会*在某些时候遇到麻烦。你需要在你的'value'变量上调用'encodeURIComponent':'data:“name =”+ encodeURIComponent(value)'当你为'data'参数传递一个字符串时,**你**正在为它负责被编码。 (或者,让jQuery处理它:'data:{name:value}'。) – 2011-05-15 09:01:43

回答

5

看这个问题?

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

你把数据作为data但尝试访问它作为$data,这是一个不同的,未初始化的变量。

此外,您不能在a元素上使用.val(),而是使用.html()来代替内部HTML。您可能还想在#result上使用.html()而不是.data()

否则你的例子似乎没事。

2

看起来你已经上了$data变量额外的美元符号,应该是:

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

它应该是:

success: function(data) { 

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