1

When my ajax is processed

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

instead of getting what I specified in the below query

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;

Instead I get all the elements in my page returned. So in other words in the div below

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

I'm returning my page. So it shows as a website within a website. It won't even show echo $grade; I thought it was my query acting up, but I tried commenting out the query and just echo $data see below

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

And doing so gave me the same result as stated previously "echoing out the website within the website" and also echoed the $data I wanted. I would be overjoyed to understand how this happened as well as what I can do to fix this problem and get my isset function/ajax corrected. Any other tips would be greatly appreciated. I know I need to change the query to PDO and plan on it.

Octavius
  • 583
  • 5
  • 19
  • are you sure you are calling correct url? such issues are always around 404 page returned or incorrect path used. – Serg Nov 05 '12 at 18:46

3 Answers3

0

After you echo what you want, put an explicit exit to terminate any further script execution.

 echo $grade;
 exit;

If the grade echo is in a loop, put the exit after the loop termination.

Ray
  • 40,256
  • 21
  • 101
  • 138
  • Didn't work, maybe you misunderstood my problem @Ray. Whether I have a query or not, when I echo data gathered from my ajax I echo out everything that's on my webpage into a div – Octavius Nov 05 '12 at 19:22
0

when you make an echo ajax will take that as response and will close the connection (so you will receive only One Answer from the server),

so my advice will be, concat all the values before to echo. You can use json encode and decode to pass the values and show them out.

Json encode php => http://php.net/manual/es/function.json-encode.php

Javascript json decode => How to JSON decode array elements in JavaScript?

Community
  • 1
  • 1
jcho360
  • 3,724
  • 1
  • 15
  • 24
0

The issue is that you are echoing the 'data' and that 'data' is being sent in this:

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

So the problem is in the this.text, when u say this, what are u referring to? it must be taking a whole website and sending it, then returning it and then posting it to the div.

try doing this first:

 {data: "test"},

if the returned result is "test" then the problem is jQuery sending everything. and you can fix that by removing th $(this) and replacing it with $("#someid").html();

Relentless
  • 122
  • 6