1

これを非常にゆっくりと説明します。頻繁に変更される可能性がある投票を作成しようとしているので、動的にする必要があります。また、ページをリロードせずにこれを行う必要があるため、Ajax を使用してフォームを送信する必要があります。そこで私がしたことは、ポーリングをエコーする PHP スクリプトを作成することでした。これはうまく機能し、思いどおりの方法で投票を取得できます。そうそう、それが多段階投票であることを忘れていました。JQMの「ページ」内でdivを非表示/表示することで、一度に2〜4の質問をナビゲートします。つまり、次のことを意味します。

<div data-role='page'>

投票には明らかに「次の」divが表示されないため、最後のページには次のボタンの代わりに送信ボタンがあります。この送信ボタンは、形状またはフォームの機能をまったく実行しないため、ここでの問題です。

$("#submit").click(function() 
        {
            if ($("#form").validate()) 
            {
                $.ajax(
                {
                type:'POST',
                url:'add.php',
                data:$('#form').serialize(),
                success:function(response)
                {
                    $("#answers").html(response);
                }
            });
            } 
            else    
            {
                return false;
            }                   

        })

これは、私のフォーム データをadd.phpという名前の別の PHP ファイルに送信することになっています。(実際にはデータベースに保存するだけのはずですが、動作することがわかるまでエコーを試みます)。さて、ひねりを加えたのは、PHP で作成されたのではなく、HTML でプロットされただけの非動的フォームで、別の同一のコードを実行したことです。これは、3 つの div/「ページ」にまたがる多段階の投票でもありました。そして、これは提出にまったく問題はありませんでした。

要約すると、私はそれぞれが私の問題の半分を処理する 2 つの異なるプロジェクトを持っていました。1 つは動的にフォームを生成し、もう 1 つは私が作成した静的フォームを保存しました。どちらのフォームも、さまざまなチェックボックス、ラジオボタン、およびテキストエリアで構成されていました。問題は、それらが連携しないことです。送信ボタンをクリックすると、フォームが回答をこの div (数行上で読んだもの) にエコーアウトすることを期待しています。

<div data-role="content" id="answers">
        Answers comes here: 
        </div>

それにもかかわらず、この div は同じままです。$("#submit").click(function()) を alert('test'); に削除しました。それでも反応がありませんでした。変数名、div 名、および関連するその他の名前を 1000 兆個もチェックし、それぞれの部分 (ポーリングの生成と ajax での投稿の両方) にさまざまな微調整を加えました。成功せずにそれらを組み合わせます。では、何百万ドルもかかる問題は、何が間違っている可能性があるかということです。私の最後の仮説は、$("#submit").click ... の JavaScript 関数が、ポーリングを生成するスクリプトの前に読み込まれるというものです。これは、送信クリック関数が宣言されている場合、次のようにどのボタンにもリンクされないことを意味します。

<input type="button" id="submit" name="Submit"/>

この送信ボタンを機能させる方法についての手がかりはありますか、または機能しない理由についての手がかりさえありますか? ここまで読んでくれた人に感謝します。あなたがポーズをとり、私を助けることができる知識を喜んで共有してくれることを願っています. また、この前の文を書いているときに誤って alt+a を押してからランダムな文字をクリックしたため、alt+z 関数を実装してくれた Stack Overflow の作成者にも感謝します。良い1日を!

編集:以下のケビンからのヒントの後にこれを試しましたが、最初のアラートボタンでさえ反応しません:

$("#submit").click(function() 
    {
        alert("it works");
        if ($("#form").validate()) 
        {
            $.ajax(
            {
            type:'POST',
            url:'add.php',
            data:$('#form').serialize(),
            success:function(response)
            {
                $("#answers").html(response);
                return false;
            }
        });
        } 
        else    
        {
            return false;
        }                   

    })
    });
4

2 に答える 2

0

投稿なしで上記のスクリプトを試してみたところ、うまくいきました。このスクリプトを実行する前に jquery をロードしていますか? または、コンソールに JavaScript エラーがありますか?

于 2012-08-07T16:05:04.930 に答える
0

return false; が必要です。$("#answers").html(応答); の下 成功関数のスコープ内。これがうまくいくかどうか教えてください。がんばれ、ケビン

于 2012-07-18T08:32:43.367 に答える