0

私が取り組んでいる寄付ページがあります。フォームに入力した後、送信が押され、php ページにデータが送信され、モーダルに表示される html が返されるか、javascript を使用してページの送信が許可されます。JavaScript の非同期性のため、これを修正する方法がわかりません。有効なデータで送信をクリックすると、データがチェックされ、ブール値が true に切り替わりますが、データが返される前にチェックされたため、送信されません。

この Web ページも wordpress で実行されています。

これがコードです。

var check = 0;
function noError(){
    check = 1;
}

jQuery('#donateform').submit(function() {
    jQuery.post(
        'validate.php', 
        jQuery("#donateform").serialize(), 
        function(data) {
            jQuery('#overlay_msg').html(data);
        }
    );

    if(check != 1)
        event.preventDefault();
    else
        self.submit();
});

そのvalidate.php中で

function noError() {
    check = 1;
}

データが有効な場合。

私はそれを調べ続けます。

ありがとう!

4

1 に答える 1

1

私が完全に理解しているかどうかはわかりませんが、問題がプロセスの順序である場合: IE、送信をクリックし、検証してから、実際に ajax 経由で送信すると、次のことをお勧めします。

送信タイプの入力をボタンに置​​き換えます

これをクリックすると、検証が実行され、検証に合格すると、その関数が ajax 経由でフォームを送信します。

html

<button type="button" id="submitButton">submit</button>

$('#submitButton').click(function(){
//run validation
if (validate == true){
ajaxSubmitFunction();
}
});

ajaxSubmitFunction(){
//run your ajax.
}

これにより、フォームを検証して ajax 経由で送信する際の多くの頭痛の種が解消されました

于 2012-11-05T19:54:53.893 に答える