4

1. HTML

ユーザーに PIN コードの入力を要求する入力があります。

<input type="text" name="pin" maxlength="4" id="pin" />

2.JavaScript

ユーザーが 4 文字を入力すると、jQuery 関数が ajax 呼び出しを開始して PHP ファイル内の PIN を処理し、対応するサイト名を返します。

$("input#pin").keyup(function() {
    var PIN = $("this").val();

    if (PIN.length == 4) {

        var dataString = "PIN=" + PIN;

        $.ajax({
            type: "POST",
            url: "pins.php",
            dataType: "json",
            data: dataString,
            cache: false,
            success: function(site)
                {
                    console.log("site name is:" + site);
                }
        });
    }
});    

3.PHP

pins.php次のコードが含まれています。

<?php
$pin = $_POST["PIN"];

if ($pin == "faf9") {
    $site = "pgv";
}

echo $site;
?>

問題

$siteajax 呼び出しの成功関数に値を戻すことができないようです。nullピンが等しくない場合はコンソール ログに値が報告されfaf9、正しいピンを入力してもログはありません。

私はどこが間違っているのか理解できないようですか?

4

5 に答える 5

8

dataType を次のように変更します。

dataType: 'HTML',

それだけです:)

于 2012-05-23T07:30:38.730 に答える
2

次のように変更します。

  • var PIN = $("this").val();と置き換えますvar PIN = $(this).val();

  • var dataString = "PIN=" + PIN;と置き換えますvar dataString = PIN;

  • dataType: "json",と置き換えますdataType: "html",

于 2012-05-23T07:36:53.860 に答える
2

あなたのphpは文字列を返しますが、JSONオブジェクトを期待しています。$.ajax関数内のデータ型属性を変更します

于 2012-05-23T07:30:49.667 に答える
2

の場合dataType: "json"、json オブジェクトを返す必要があります。そうでない場合は、そのタイプを適切なものに変更しdataType: "html"ますdataType: "text"

また、$site戻り値を null にしたくない場合は、初期化する必要があります。

于 2012-05-23T07:32:16.657 に答える
1

このm8は正確な問題には関係ありませんが、 $(this) 引用なしで使用する必要があると思います

于 2012-05-23T07:32:12.673 に答える