1

ページに 2 つのフォームがあります。ユーザーにとっては 1 つのフォームのように見えますが、実際には 1 つのフォームであることを望みます。しかし、コードを再利用して何かをインクルードしようとしている方法では、ソース コードに 2 つのフォームを含めることは避けられません... 1 つとして機能しようとしています。

私は ajax 送信をしたくありません。通常の投稿送信が必要です。私のフォーム ハンドラーにはリダイレクトがあります。これらの両方を送信し、サーバー側で意味のある値を取得するにはどうすればよいですか? 何かのようなもの$_POST['form1]['whatever'] $_POST['form2]['thing']

おそらく、フォーム 2 からすべての入力を取得し、すべての名前をプレフィックスで変更して、フォーム 1 に追加しますか? これを行う面倒でない方法が見つかりません。コードは必要ないと思います。ただの計画です。最も乱雑でないアイデアが勝ちます。

4

3 に答える 3

3

おそらく、フォーム 2 からすべての入力を取得し、すべての名前をプレフィックスで変更して、フォーム 1 に追加しますか?

それはまさにあなたがしなければならないことです。コードサンプルがなければ答えはあまり出ないので、どうぞ。

$("#form2 :input").appendTo("#form1")[0].submit()

PHP$_POST['thing']では、2 つの値を持つ配列が含まれています。または、form2 からのすべての入力の名前を変更することもできます。

$("#form2 :input").attr("name",function(name){
    return name + "_form2";
}).appendTo("#form1")[0].submit();
于 2012-11-16T22:58:29.583 に答える
1

を使用して1つのフォームの値を収集し、以前に呼び出された結果を格納する変数から名前と値を使用して入力をjQuery.serializeArray()生成し、フォームのイベントでそれらを2番目のフォームに挿入することができます。hiddenjQuery.serializeArray()submit

于 2012-11-16T23:04:04.230 に答える
0

PHP では、両方のフォーム フィールドを 1 つのフォームに結合できるはずです。コードで許可されていない場合は、ひどい状態になっている必要があります。

単純なスクリプトを使用している場合は、フォームをフィールドを生成する部分と、フォームのアウトラインを生成するその他の部分に、個別のスクリプトまたは単に個別の関数として分割できるはずです。

すなわち:

<?php 

    function form_body($params) {
        // here's the code for echoing fields according to $params
    }

    function form($params) {
        // here's the code to build the form properties 
        $f_properties = '....';
        echo '<form '.$f_properties.'>';
        form_body($params);
        echo '</form>';
    }

?>

次に$params、form1 と form2 を組み合わせて最終的なフォームを取得するだけです。

OOP を使用している場合、両方のフォームを含む新しいクラスを派生させて、それらのフィールドを出力させるのはおそらく非常に簡単です。

これは非常に単純化されたアドバイスですが、リファクタリングに役立つソースを提供していないため、漠然とした/一般的なコードの例しか提供できません。

クライアント側でフォームを結合する js の方法を使用すると、コードを維持および進化させるために多くの問題が発生し、多くの問題が発生します (セキュリティはもちろん)。

于 2012-11-17T00:06:13.897 に答える