0

私はHTMLコードを持っています:

<div id="question_form">
<form method="POST" id="question_form" action="addQuestion.php">
<input type="hidden" id="u_id" name="u_id" value="6"/>
<input type="hidden" id="u_a_name" name="u_a_name" value=""/>
<textarea placeholder="question here" cols="138" rows="3" name="question" id="question_input"/>
<input type="image" class="ask_button" value="submit" src="img/ask.png"/>
</form>
</div>

そしてここにJavaScriptがあります:

$(".ask_button").click(function() {
        $.ajax({
               type: "POST",
               url: "addQuestion.php",
               data: $("div#question_form").formSerialize() + "&textareadata="+escape($("#question_input").value),
               success: function(data)
               {
                        if (data == "Asked") {
                        window.location.reload();
                    } else {
                        alert(data);
                    }
               }
             });
        return false;
    });

PHP ファイルは質問が空であることを確認し、そうでない場合はデータベースに書き込みます。

送信ボタンをクリックすると、php スクリプトは正しく実行されますが、アラートではなく addQuestion.php ページが表示されます。何が問題になる可能性がありますか?

4

5 に答える 5

1

この同様の問題をここで見ることができます

PHPを使用したajaxフォームの送信

これはすでに私によって解決されています。そして、それがあなたにも役立つことを願っています。

于 2012-12-30T04:43:56.190 に答える
1

escape($("#question_input").value)する必要がありますencodeURIComponent($("#question_input").val())

jQuery オブジェクトには値プロパティがありません (.val()代わりに使用)。これにより、コードでエラーが発生し、おそらくフォームが送信されます。addQuestion.php


id同じ名前のタグが 2 つあります。

<div id="question_form">
<form method="POST" id="question_form" action="addQuestion.php">

idjQuery が期待される結果を提供するには、各タグが HTML 内で完全に一意である必要があります。いずれかの名前を変更してみてください。

于 2012-12-30T04:21:00.973 に答える
0

わかりました、解決しました。本当に悪いスクリプトを使用したので、すべてのパラメーターを手動で変更.value.val()て配置したので、今では機能しているようです。

于 2012-12-30T04:54:21.423 に答える
0

おそらく、フォームが ajax 経由で送信されず、通常の HTTP 手段で送信されることを妨げる Javascript エラーが発生している可能性があります。

actionフォームの属性は ajax リクエスト URL と同じであるため、違いはわかりません。それらのいずれかを変更すると、私が説明することに気付くでしょう。

この問題を追跡するには、firebug/firefox/chrome コンソールで「ナビゲーション時にログを保持する」または同様のオプションを有効にし、テストを再度実行して、に移動する直前にコンソールにエラーが表示されることを確認してくださいaddQuestion.php

于 2012-12-30T04:59:01.030 に答える
0

この種の問題を回避するには、このようにするだけです。

$(document).ready(function(){
$(".ask_button").click(function() {
    $.ajax({
           type: "POST",
           url: "addQuestion.php",
           data: $("#question_form").serialize(),
           success: function(data)
           {
                if (data == "Asked") {
                    window.location.reload();
                } else {
                    alert(data);
                }
           }
         });
    return false;
});

});

divとフォームに異なるIDを指定します...

于 2012-12-30T05:06:15.430 に答える