Jquery $ .post返回错误的数据

时间:2012-11-05 18:44:58

标签: php javascript jquery mysql ajax

处理我的ajax时

$.post("main.php", 
          {data: $(this).text()}, 
          function(data) {
               //alert("Data saved.");
               $('#demo').html(data);
          });   

而不是获取我在下面的查询中指定的内容

if (isset($_POST['data'])){
$data = $_POST['data'];

    $query = mysql_query("SELECT * FROM tempusers
    WHERE 'firstname' LIKE '%$data%' 
        OR 'lastname' LIKE '%$data%' 
        OR 'title' LIKE '%$data%'");

    while($row=mysql_fetch_assoc($query)){
                $firstname=$row['firstname'];
                $lastname=$row['lastname'];
                $grade=$row['grade'];


    echo $grade;

相反,我会返回页面中的所有元素。换句话说,在下面的div中

 <div id="demo"></div>

我正在归还我的页面。因此它显示为网站内的网站。它甚至不显示echo $grade;我认为这是我的查询,但我尝试评论查询,只是echo $data 见下文

if (isset($_POST['data'])){
$data = $_POST['data'];
echo $data; 

这样做给了我与之前所说的相同的结果“回应网站内的网站”,并回应了我想要的$ data。我很高兴能够理解这是怎么发生的,以及我可以做些什么来解决这个问题并让我的isset函数/ ajax得到纠正。任何其他提示将不胜感激。我知道我需要将查询更改为PDO并进行规划。

3 个答案:

答案 0 :(得分:0)

在回显所需内容后,请显式退出以终止任何进一步的脚本执行。

 echo $grade;
 exit;

如果等级回波处于循环中,请在循环终止后放置退出。

答案 1 :(得分:0)

当你创建一个echo时,ajax将把它作为响应并关闭连接(这样你只能从服务器收到一个答案),

所以我的建议是,将之前的所有值汇总到echo。您可以使用json编码和解码来传递值并显示出来。

Json编码php =&gt; http://php.net/manual/es/function.json-encode.php

Javascript json decode =&gt; How to JSON decode array elements in JavaScript?

答案 2 :(得分:0)

问题是你正在回应“数据”并且正在发送“数据”:

 {data: $(this).text()}, 

所以问题出现在this.text中,当你这样说时,你指的是什么?它必须采取整个网站并发送它,然后返回它,然后将其发布到div。

首先尝试这样做:

 {data: "test"},

如果返回的结果是“test”,则问题是jQuery发送所有内容。你可以通过删除$(this)并用$(“#someid”)替换它来解决这个问题.html();