0

您好,我正在尝试创建一个 ajax 查询,但是当我返回结果时,我得到未定义的响应。除了名为“hello”的对象,它返回为“h”,即使它设置为“hello”。我觉得这与 ajax 发送数据的方式有关,但我不知道可能是什么问题。任何帮助将不胜感激。

这是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]);
        }
    });
}

然后这里是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));                   


};
4

3 回答 3

4

您的 PHP 脚本可能会产生错误消息,因为您尝试访问的 $_POST 值与您在请求中发送的键名不匹配。例如:$_POST['emailSearchText'], 然而你emailtext在 AJAX 调用中使用了。

这很可能导致 jQuery 无法将响应解析为 JSON,因此出现了 Undefined.

于 2013-05-22T20:30:17.880 回答
1

首先,您必须删除引号,否则您将传递这些文字而不是变量。

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

然后,就像ashicus指出的那样,在您的 PHP 文件中:

$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']);
于 2013-05-22T20:14:07.037 回答
0

JS 文件看起来没问题,所以这几个线索来检查 PHP 文件。

  1. 看看那里是否有 POST 参数(在 php 中打印所有 $_POST)
  2. 检查您的偶数是否进入 IF。添加一个 else 语句并回显一些虚拟 json。
  3. 检查回显的编码 json 中的实际内容。将其分配给 var 然后打印。
于 2013-05-22T20:31:46.823 回答