1

現在、ページの更新やボタンのクリックなしで動作する JS/AJAX 関数を使用しています。値をエコーするときに問題が発生しました。たとえば、この行を変更する$email = $_POST['name'];と完全に機能しますが、メールの実際の値を使用する$email = $_POST['email'];と機能しません。私は JS と php の両方の新しい学習者です。

誰かがなぜそのような結果を出しているのか教えてもらえますか?

<script>
    $(document).ready(function() {
        var timer = null; 
        var dataString;   
        function submitForm(){
            $.ajax({ type: "POST",
                url: "test1.php",
                data: dataString,
                success: function(result){
                    $('#special').html($('#resultval', result).html());
                }
            });
            return false;
        }
        $('#email').on('keyup', function() {
            clearTimeout(timer);
            timer = setTimeout(submitForm, 0050);
            var name = $("#email").val();
            dataString = 'name='+ name;
        });
    }); 
</script>

PHP

<?

if($_POST) {
    $email = $_POST['email'];
    if (preg_match('|^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) {
        echo ('<div id="special"><span id="resultval">'.$email.'</span></div>');
    }
    else {
        echo ('<div id="special"><span id="resultval">Include a valid email address.</span></div>');

    }           
}
?>
4

2 に答える 2

1

ええと、電子メール アドレスを保持するためにパラメータ「name」を明示的に指定します。あなたが指定した「email」パラメータはありません。JS コードの次の行を略奪します。

dataString = 'name='+ name;

したがって、あなたのようにphpでメールアドレスを読み取ろうとしても意味がありません:

$email            = $_POST['email'];

JSコードを変更して、phpコード内で読み取ろうとしているのと同じ名前をパラメーターに付ける必要があります。


したがって、ほとんどの場合、現在の JS コードを変更するだけで済みます。

        var name = $("#email").val();
        dataString = 'name='+ name;

        var email = $("#email").val();
        dataString = 'email='+ email;
于 2012-07-28T06:15:16.387 に答える
0

クライアント側ではブラウザがパラメータを使ってリクエストを行うのでname(なぜならdataString = 'name=' + name;)、サーバー側では で値を取得できます$POST['name']

于 2012-07-28T06:15:19.263 に答える