0

ajaxログインに非常に奇妙な問題があります。以下にログインするためのコードを示します。奇妙なことは次のとおりです。

アラートを削除した場合( "???"); ログインするための正しいパラメーターを取得している間、checklogin.phpから応答がありません。

アラートの場合( "???"); 関数に残り、ページchecklogin.phpが「成功」と応答し、website.phpがロードされます。

基本的に、alert()がない場合、ajaxの成功には入りません。

私はこれを何時間も見てきましたが、アラートがこれを機能させるために何をトリガーするのかわかりません。

それでもすべての正しいパラメーターを取得しますが、phpはアラートなしでは応答しません。'beforeSend'を使用してajaxでスリープを設定しようとしましたが、機能しませんでした。

前もって感謝します!

AJAX関数:

    function checkSwipedCredentials(decryptedCredentials)
{   
    $.ajax({
        type: 'POST',
        url: 'checklogin.php',
        data: decryptedCredentials,
        success:function(response)
                {
                    if(response == 'success')
                    {
                        document.location='website.php';
                    } else {
                        showSwipeForm(); //onfailure
                    }
                }
    });
    alert("???");
    return false;
}

PHPコード:

    $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($sql);

$count = mysql_num_rows($result);
if($count == 1)
{
    echo "success";
    $_SESSION['username']=$username; 
} else {
    echo "failed";
}
4

3 に答える 3

0

を削除しreturn false;ます。これを行う必要がある理由はありません。アラートはその影響を抑制しています。

于 2013-02-27T15:18:20.713 に答える
0

アラートの機能を教えてください。関数がfalseを返す前に一時停止を追加します。この一時停止は、[OK]をクリックする必要がある限り長く、AJAXリクエストを処理するにはこれで十分です(これは非同期で発生することに注意してください)。

PHPは、間違いなく正確に応答します。応答は正しく評価されなくなります。

残りの質問は、戻り値にこれらの副作用があるように、この関数をどのように呼び出すかです。

于 2013-02-27T15:18:28.020 に答える
0

アラートは、ページが存在している間、ページがそれ以上アクションを実行できないようにします。これは、「falseを返す」が原因で問題が発生していることを示しています。または、呼び出しが行われた後、ページ上の他の何かがajax呼び出しと競合しています。アラートの存在により、ajax呼び出しは中断される前に完了することができます。このコードに問題があるかどうかを判断するために、この機能を分離してテストページだけに配置することをお勧めします。分離すれば機能すると思います。

于 2013-02-27T15:19:04.390 に答える