0

以下のコードを使用して、フォームをネイティブに送信しようとしています。

$('#invoices-bundle').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    this.submit();
    $.post('php/seller/invoice/invoice_print_batch.php', function(data){
        $('#added-invoices').html(data);                                             
    });// use the native submit method of the form element   
});

submit();の後 PHPスクリプトの内容をDOMに入力したいと思います。奇妙なことに、最初にフォームを送信したときにDOMが入力されませんが、2回目以降は毎回入力されます。

なぜこれが起こるのかわからない!助言がありますか?

ありがとう!

4

2 に答える 2

2

を使用してフォームを送信すると this.submit();、残りのコードは使用できなくなります。ページは変更または更新され、ajaxコードの後に​​壊れます。通常のフォームの送信やコードの順序の変更の代わりに、ajaxとして投稿するフォームを作成submit()し、最後に配置します。

于 2012-04-12T11:47:07.827 に答える
0

AJAXを介して送信する場合、「ネイティブ送信を使用する」というコメントを含めるのはなぜですか(これはデフォルトのpreventと競合しているようです)。

AJAX投稿を実行しているときに送信アクションを実行する必要はないようです-すぐに実行されます。POSTの戻り値を収集し、それらをinvoice_print_batch.phpページで利用できるようにすることを望んでいますか?同様に送信する必要があるページ上のフォーム要素はありますか?これらの変数を設定し、$.post呼び出しのデータパラメータで送信します。

$('#invoices-bundle').submit(function(e) {
    e.preventDefault(); // don't submit multiple times
    var itemToSend = form.find('input[name="inputsName"]').val();
    // ...more?
    $.post('invoice_print_batch.php', { value: itemToSend }, function(data) {
        $('#added-invoices').html(data);
    });
});

ここでvalueは、invoice_print_batch.phpの$_POSTにあります。

フォームの自然な送信は回避され、ページの値はphpページに送信され、そのphpPOSTの結果は現在のページで更新されます。

実際のページ処理が現在のページで行われる場合は、処理をinvoice_print_batch.phpに移動し(おそらくそのファイルの名前を変更します)、そのページにすべてのフォーム入力を処理させ、「回答」を返す/印刷することをお勧めします。最終的には、送信を処理するためのページの読み込みやリダイレクトを行わなくても、ページの応答性が向上します。

フルパスが必要でしたか?現在のページが同じディレクトリにある場合に実行できる読みやすさのために短縮しましたが、そうではない可能性があります。

于 2012-04-12T12:19:27.123 に答える