1

次のコードがあります。

function check_email() {
    var email = $('#email').val();
    $.post(
        "inc/check.php", 
        { email: email },
        function(result) {
            if (result == 0) {
                // Do Stuff
            }
            else {
                // Do Stuff
            }
        }
    );
}

開発環境の私のブラウザでは、これは問題なくテストされます。ただし、同じブラウザを使用する他の環境では、リクエストが発生していないようです。私は次のようにしてこれをテストしました:

function check_email() {
    alert('test1');
    var email = $('#email').val();
    $.post(
        "inc/check.php", 
        { email: email }, 
        function(result) {
            alert('test2');
            if (result == 0) {
                // Do Stuff
            }
            else {
                // Do Stuff
            }
        }
    );
}

最初のtest1アラートは発生しますが、2 番目のアラートは発生test2しません。これは特定の環境でのみであることを覚えておいてください。誰かが理由を知っていますか?

4

1 に答える 1

3

最初のtest1アラートは発生しますが、2番目のアラートtest2は発生しません。これは特定の環境でのみ発生することを忘れないでください。誰かがなぜ何かアイデアを持っていますか?

それが機能しない環境で問題が発生しているため、successハンドラーが呼び出されていません。

が悪かったのかを知ることができます

  1. ブラウザの開発ツール、特に[ネットワーク]タブを見て、

  2. ハンドラーを使用して、errorハンドラーが提供する情報を検査します。

オプション#2では、次のように、$.post使用法を書き直す必要があります(とにかく$.ajaxショートカット/ラッパーにすぎません)。$.ajax

$.ajax({
    type:    'POST',
    url:     "inc/check.php",
    data:    {email: email},
    success: function(result) {
        alert('test2');
        if (result == 0) {
            // Do Stuff
        }
        else {
            // Do Stuff
        }
    },
    error:   function(jqXHR, status, errThrown) {
        // Look at what went wrong here
    }
});

ちなみに、alert-styleデバッグは非常に非効率的であり、2013年には必要ありません。代わりに、ブラウザーに組み込まれているデバッガーを使用してください。ブレークポイントを設定し、コードをステップ実行します。IE8以降を含め、すべての主要なブラウザーにはデバッガーが組み込まれています。Firefoxの組み込みのものはまだかなり基本的ですが、Firebugプラグインがあります。Chromeに組み込まれているツールは優れていますが、繰り返しになりますが、それらはすべて多かれ少なかれそれらを備えています。絶対に、積極的にIE7またはIE6で何かをデバッグする必要がある場合は、VisualStudioもあります。

于 2013-01-08T09:58:25.873 に答える