0

私はJavaScriptプログラミングのスキルがほとんどないので、これが問題であるに違いありません。私の問題はそれほど複雑ではありませんが、答えが見つからないだけです。ほぼすべてを試しましたが、前述のように、JavaScript プログラミングが苦手です。

私の問題は、php ページを持っていることです。このページには、mysql クエリによって生成された複数のフォームがあります。それらを使用して、動的に生成された隠しフィールド値を別のphpファイルに投稿し、そのファイルでメインページを更新せずに投稿値を使用できます。フォーム ID (または名前) も mysql クエリによって生成されます。JavaScript を使用してフォームを検証 (?) し、非表示のコンテンツを別のページに送信します。

Javascript:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
        $("#1").validate({
            debug: false,
            submitHandler: function(form) {
                $.post('process_like_dislike.php', $("#1").serialize(), function(data) {
                    $('#results').html(data);
                });
            }
            });
    });
    </script>

ご覧のとおり、この場合のフォーム ID は 1 です。1 つのページに約 40 の一意のフォームを生成しますが、これは mysql クエリに依存します。

Php:

<form name='$formnumber' id='$formnumber' action='' method='POST'>
<input type=hidden value='$us_id' name='us_id' id='us_id'>
<input type=hidden value='$an_id' name='an_id' id='an_id'>
<input type=hidden value='1' name='on' id='on'>
<input type=submit class=something value='' title='Something'>
</form>

送信時に選択したフォームを動的に検証する JavaScript コードを作成する方法がわかりません。javascript で php formnumber 変数を取得しようとしましたが、役に立ちませんでした。他に方法があるかどうかはわかりませんが、これしか知りません。動的に生成された非表示の値を別のページに渡す必要がありますが、動的に生成された JavaScript が必要かどうかわかりません。

このコードの主なコンセプトは、あるものを評価できるページを作成し、そのものには投稿形式で取得する必要がある非表示の値があるということです。これが、どのボタンが押されたかを判断できる唯一の方法だからです。現在のファイルを更新せずに、2 番目の php ファイルで mysql クエリを実行します。前のページが失われ、ページを更新したくないので、単純な投稿はしたくありません。

私を助けてください、ありがとうございます。

4

2 に答える 2

0

@Michael Wheelerのソリューションは、私が最初に思いついたものよりもエレガントです-ただし、「this」はフォームに設定されていないため(テスト済み)、他の $( $(this) の代わりに "#1") を使用すると、完璧に機能します。=)

于 2012-08-29T23:58:48.150 に答える
-1

AJAX: http://www.w3schools.com/ajax/default.asp とおそらく jquery から 大きな恩恵を受けるでしょう 。 .com/jQuery.ajax/

于 2012-08-29T23:24:55.910 に答える