1

.text()関数で関数を適切に実行できないようです。

ときどきページが正しく表示されることがありますが、ほとんどの場合、テキストは変更されません。<p>ページは「待機中」と表示されたタグで始まり、その後のイニシャル.text()beforeSend:正しく機能し、テキストは「リクエストの処理中...」に変更されますが、それ以降、.text()機能が機能しないようです。

console.logs を追加して、msg変数が正しく入力されているかどうかを確認しましたが、2 回目.text()はまだ<p>タグが変更されていません。どのブラウザでも同じようです。

これは私の機能です:

function sendrequest(first, last, email) {
    var request = $.ajax({
        url:"/core/ajax/register.php",
        type:"POST",
        data: {uf:first,ul:last,ue:email},
        beforeSend: function(){
            forms.regFor.fadeOut(100, function(){
                $('p#msg').text('Processing request...');
            });
        }
    });

    request.done(function(data){
        var msg;

        if (data == 1){
            msg = "Thank you "+first+", your request has been sent.";
            console.log('Registered successfully');
        }else if (data == 2){
            msg = "It appears that you have already signed up.";
            console.log('Already signed up');
        }else{
            msg = "There has been an error.";
            console.log('Error on submission');
        }

        console.log(msg);

        $('p#msg').text(msg);
    });
}

私はおそらく非常に単純なものを見逃してしまったのでしょう。

4

1 に答える 1

3

通話で を削除してみてくださいfadeOutbeforeSend

おそらく、AJAX 呼び出しが完了する前に、fadeOut が完了していません。したがって、AJAXdoneがトリガーされると、fadeOut が完了し、フェードアウト コールバックが発生して、AJAX のdone変更が破棄されます。

    beforeSend: function(){
        $('p#msg').text('Processing request...');
    }

フェードアウトが必要だと思われる場合は、AJAX 呼び出しをフェードアウト コールバックに入れます。

forms.regFor.fadeOut(100, function(){
    var request = $.ajax({
        url:"/core/ajax/register.php",
        type:"POST",
        data: {uf:first,ul:last,ue:email},
        beforeSend: function(){
            $('p#msg').text('Processing request...');
        }
    });
    request.done = // etc.
});
于 2013-08-11T16:53:52.947 に答える