Steve Beaty
Steve Beaty

Reputation: 69

returned ajax query data undefined

Hello I am attempting to create an ajax query but when my results are returned I get Undefined as a response. Except for the object called "hello" which returns back as "h" even though it is set to "hello". I have a feeling it has something to do with the way ajax is sending the data but i'm lost as to what may be the issue. Any help would be greatly appreciated.

here is the ajax

function doSearch() {

    var emailSearchText = $('#email').val();
    var keyCardSearchText = $('#keyCard').val();
    var userNameSearchText = $('#userName').val();
    var pinSearchText = $('#pin').val();
    var passwordSearchText = $('#password').val();


    $.ajax({
        url: 'process.php',
        type: 'POST',
        data: {
        "hello": "hello", 
        "emailtext": "emailSearchText", 
        "keycardtext": "keyCardSearchText", 
        "usernametext": "userNameSearchText",     
        "pinText": "pinSearchText", 
        "passwordtext": "passwordSearchText" 
        },
        dataType: "json",
        success: function (data) {
            alert(data.msg);
            var mydata = data.data_db;
            alert(mydata[0]);
        }
    });
}

Then here is the php

include_once('connection.php');

if(isset($_POST['hello'])) {

        $hello = $_POST['hello'];
        $emailSearchText = mysql_real_escape_string($_POST['emailSearchText']);
        $keyCardSearchText = mysql_real_escape_string($_POST['keyCardSearchText']);
        $userNameSearchText = mysql_real_escape_string($_POST['userNameSearchText']);
        $pinSearchText = mysql_real_escape_string($_POST['pinSearchText']);
        $passwordSearchText = mysql_real_escape_string($_POST['passwordSearchText']);


        $query = "SELECT * FROM Students WHERE (`User name`='$userNameSearchText' OR `Email`='$emailSearchText' OR `Key Card`='$keyCardSearchText')AND(`Password`='$passwordSearchText'OR `Pin`='$pinSearchText')";
        $students = mysql_query($query);
        $count = (int) mysql_num_rows($students);
        $data =  array();

        while($student = mysql_fetch_assoc($students)) {
            $data[0] = $student['First Name'];
            $data[1] = $student['Last Name'];
            $data[2] = $student['Date of last class'];
            $data[3] = $student['Time of last class'];
            $data[4] = $student['Teacher of last class'];
            $data[5] = $student['Membership Type'];
            $data[6] = $student['Membership Expiration Date'];
            $data[7] = $student['Free Vouchers'];
            $data[8] = $student['Classes Attended'];
            $data[9] = $student['Classes From Pack Remaining'];
            $data[10] = $student['5 Class Packs Purchased'];
            $data[11] = $student['10 Class Packs Purchased'];
            $data[12] = $student['Basic Memberships Purchased'];
            $data[13] = $student['Unlimited Memberships Purchased'];
            $data[14] = $student['Groupon Purchased'];  
        };

        echo json_encode(array("data_db"=>$data, "msg" => "Ajax connected. The students table consist ".$count." rows data", "success" => true));                   


};

Upvotes: 0

Views: 195

Answers (3)

LorenzoR
LorenzoR

Reputation: 421

First of all, you have to remove the quotes or you will be passing those literals instead of the variables.

$.ajax({
    ...
    data: {
    hello: "hello", 
    emailtext: emailSearchText, 
    keycardtext: keyCardSearchText, 
    usernametext: userNameSearchText,     
    pinText: pinSearchText, 
    passwordtext: passwordSearchText 
    },
    ...
});

And then, like ashicus point out, in your PHP file:

$emailSearchText = mysql_real_escape_string($_POST['emailtext']);
$keyCardSearchText = mysql_real_escape_string($_POST['keycardtext']);
$userNameSearchText = mysql_real_escape_string($_POST['usernametext']);
$pinSearchText = mysql_real_escape_string($_POST['pinText']);
$passwordSearchText = mysql_real_escape_string($_POST['passwordtext']);

Upvotes: 1

Grzegorz Kaczan
Grzegorz Kaczan

Reputation: 21676

JS file looks ok, so this few clues to check PHP file.

  1. See if there are even POST params there (printr all $_POST in php)
  2. Check if your even enters IF. Add an else statement and echo some dummy json.
  3. Check what is actually in encoded json that is echoed. Assign it to var then print.

Upvotes: 0

ashicus
ashicus

Reputation: 1252

Your PHP script is likely producing error messages because the $_POST values you are trying to access don't match the key names you are sending in the request. For example: $_POST['emailSearchText'], yet you used emailtext in the AJAX call.

This is most likely causing jQuery to not be able to parse the response as JSON, hence the Undefined.

Upvotes: 4

Related Questions