0

Ajaxでフォームを送信しようとしていますが、送信できません。複数のフォームがあり、(これを)使用してデータを送信しています。エラーが発生しFrom error:0 errorます。アラートメッセージは、値があることを示しています。

<script type="text/javascript">
$(document).ready(function() {

    $(".submitform").click(function (){
        alert ($(this).parent().serialize());
        $.ajax({
                type: "POST",
                url: "reply_business.php",
                timeout:5000,
                data: $(this).parent().serialize(),
                beforeSend: function(xhr){
                    $('#load').show();
                },
                success: function(response){
                    $(this).parent().find('.sentreply').append(response);
                    $('.sentreply div:last').fadeOut(10).fadeIn(2000);
                    //uncomment for debugging purposes
                    //alert(response);
                },
                error: function(jqXHR) {
                   alert ('From error:' + jqXHR.status + ' ' +jqXHR.statusText);
                },
                complete: function(jqXHR, textStatus){
                    //uncomment for debugging purposes
                    //alert ('From complete:' + jqXHR.status + ' ' +jqXHR.statusText + ' ' + textStatus);
                    $('#load').hide();
           }
        });

    });
}); 

    </script>

PHPコードで以下のフォームを作成しています

foreach ($array['business_ids'] as $business) 
                  {              

                        ?>
<form >
  <input type="hidden" name="b_id" value="<?php echo $business ; ?>" />
  <input type="hidden" name="c_id" value="<?php echo $sqlr['conversation_id']; ?>" />
  <input type="hidden" name="q_id" value="<?php echo $sqlr['query_id']; ?>" />
  <input type="hidden" name="u_id" value="<?php echo $sqlr['u_id']; ?>" />
  &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;
  <textarea  name="reply">Type the reply here.</textarea>
  <input type="submit"  class="submitform" value="Submit">
</form>
<?php


                  }

Ajaxがデータを送信できない理由がわかりません。

4

2 に答える 2

1

マークアップやネットワークトラフィックを見ずに、推測することしかできません。おそらく$(this).parent()はフォームではありませんか?

通常、この理由と、Enterキーを押して送信されたフォームをキャプチャしないため、添付する$(form).submit()方が安全です。$(button).click()$(button).click()

編集ここに例があります:

<form id="theform">
    <input type="text" id="thetext" name="thetext" />
    <input type="submit" value="send" />
</form>
<form id="anotherform">
    <input type="text" id="anothertext" name="anothertext" />
    <input type="submit" value="save 2" />
</form>
<script>
    $(document).ready(function () {
        $("#theform").submit(function (e) {
            var data = {
                thetext: $("#thetext").val()
            };
            $.ajax("/the/server/url", {
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(data),
                success: function (r) {
                    alert("done");
                }
            });
            // Technically you need only one or the other
            e.preventDefault();
            return false;
        });
    });
</script>
于 2013-01-19T18:22:50.840 に答える
0

Ajaxリクエストを開始した後、フォームを送信したようです。ページがアンロードされると、リクエストはキャンセルされます。フォームにはがないactionため、送信すると現在のページがリロードされるだけなので、気付かない場合があります。

これを防ぐにpreventDefault()は、キャッチされたイベントを実行する必要があります。また、click送信ボタンのイベントだけでなく、submitそれ<form>自体のイベントも処理する必要があります。

于 2013-01-19T19:07:41.203 に答える