0

こんにちは、ajax クエリを作成しようとしていますが、結果が返されると、応答としてUndefinedが返されます。「hello」に設定されていても「h」として返される「hello」というオブジェクトを除いて。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

アクセスしようとしている $_POST 値が、リクエストで送信しているキー名と一致しないため、PHP スクリプトがエラー メッセージを生成している可能性があります。例: $_POST['emailSearchText']、まだemailtextAJAX 呼び出しで使用しています。

これにより、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 に答える