0

サーバー側の検証がcheck.phpで完了するまで、ユーザーを「http://www.othersite.com」に送信することを「延期」(フォームのデフォルトの動作を停止)したい

完了したら、ユーザーを「http://www.othersite.com」に誘導します。検証ページには問題なく送信できますが、検証してから別の Web サイトに送信する必要があります。このようなフォームがあるとします

$(document).ready(function(){
$('#sendbutton').click(function(){
$('#error').empty();
$('#send').ajaxForm(function (data, textStatus) {
$('#error').append(data);
});
});
});

<form id="send" name="send" method="post" action="http://www.othersite.com/index.htm">
<input type="text" id="fname" name="fname" />
<input type="text" id="lname" name="lname" />
<input type="text" id="address" name="address" />
<input type="text" id="city" name="city" />
<input type="text" id="state" name="state" />
<button id="sendbutton">Submit</button>
</form>
<div id="error"></div>

サーバー側の検証はcheck.phpで行われます

check field inputs here on check.php
if not correct
echo error message

if successful echo "validation_ok"

返されたデータが「validation_ok」の場合、「http://www.othersite.com」でフォームの送信を完了するようユーザーに送信します。

4

2 に答える 2

0

(@nachitoによって暗示されるように)AJAXにとって素晴らしい機会のように聞こえます。それ以外の場合は、次のこともできます。

  1. 最初にフォームをcheck.phpレンダリングし、クライアント側の検証を行います。
  2. フォームのアクションを実行しcheck.phpます(効果的にそれ自体にポストバックします)。
  3. 検証が成功したら、フォームのアクションをに設定しwww.othersite.com、「自動送信」のフラグを立てるjavascriptリテラル値(または、必要に応じて非表示の入力)をエコーし​​ます。
    • フォームを反転するのではなく、jQueryを使用してフォームのアクションを変更することもできますcheck.php
  4. フラグが検出されたら、document.readyイベントのフォームを送信します。

それができない場合は、サーバー側の検証に合格したかどうかにcheck.php投稿することもできます(そして、グーグル「PHPからのHTTP POST、cURLなし」のみ)。www.othersite.comcURL

于 2012-05-21T00:13:28.343 に答える
0
$(document).ready(function() {
    $('#send').submit(function() {
        $('#error').empty();
        // Post the form to your validation page
        $.post('/check.php', $(this).serialize(), function (data) {
            // If validation failed, stop submission
            if (data != 'validation_ok') {
                $('#error').append(data);
                // Prevent submission.
                return false;
            }
        });
    });
});
于 2012-05-21T00:00:15.107 に答える