1

次の ajax スクリプトはデータを php に送信していません。ページがリロードされるだけで、フォームの入力値が URL に渡されます。

脚本

<script>
  $("#addProducts").submit(function(event) {
     var str = $("addProducts").serialize();
     event.preventDefault();
     $.ajax({
        type: "POST",
        url: "subAddProduct.php",
        data:str
     })
  });
</script>

HTMLフォーム

<form enctype="multipart/form-data" id="addProducts">
...
</form>
4

10 に答える 10

2

あなたのコードにはすでに問題があり$("addProducts").serialize();ます$("#addProducts").serialize();

いくつかのテストを実行しました。問題は、ドキュメントの準備が整う前に関数をバインドしようとするためです。コードを以下のコードに置き換えてください。

$(document).ready(function() {
    $("#form1").submit(function(event) {
         var str = $("#form1").serialize();
         event.preventDefault();
         $.ajax({
            type: "POST",
            url: "test.php",
            data: str
        });
    });
});

Zeeshan Bilal と pvorb が言ったことについては、間違っていると思います。submit()使用するのに適した関数です ( jQuery のドキュメントを参照してください)。

説明: イベント ハンドラーを "submit" JavaScript イベントにバインドするか、要素でそのイベントをトリガーします。

于 2013-05-20T10:56:10.473 に答える
1

この問題を解決するには、コードを次のように変更する必要があります。

<script>
$("#addProducts").submit(function(event) {
  var str = $("#addProducts").serialize();
  $.ajax({
    type: "POST",
    url: "subAddProduct.php",
    data:str,
    success: function(data){
      //perform your success process here
      return false;
    }
  })
});
</script>
于 2013-05-22T09:11:48.980 に答える
1

以下に示すように、Ajax async プロパティを false に設定してみてください

<script>
  $("#addProducts").submit(function(event) {
     var str = $("addProducts").serialize();
     event.preventDefault();
     $.ajax({
        async:false
        type: "POST",
        url: "subAddProduct.php",
        data:str
     })
  });
</script>
于 2013-05-22T11:20:46.907 に答える
1
$("#addProducts").click(function(event) {
    var str = $("#addProducts").serialize();
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: "subAddProduct.php",
        data:str
    });
});
于 2013-05-20T10:28:22.303 に答える
1

以下のようにJSを調整します

<script>
$("#addProducts").click(function(event) {
    $.ajax({
        type: "POST",
        url: "subAddProduct.php",
        dataType : 'json', //data type can be any type like json, html etc.
        data:'str='+str
        success : function(data) {
            //perform your success process here
        }
    });
});
</script>

上記のコードはテストしていませんが、私の ajax 機能に同じコードを使用しているため、動作するはずです。

$.ajax http://api.jquery.com/jQuery.ajax/の jquery ドキュメントも確認してください。

于 2013-05-20T10:40:08.917 に答える
1

ドキュメントの準備ができていないときに関数をバインドしようとしている可能性があります。

$(document).ready(function() {
 $("#addProducts").submit(function(event) {
 var str = $("addProducts").serialize();
 event.preventDefault();
 $.ajax({
 type: "POST",
 url: "subAddProduct.php",
 data:str
   })});

});

于 2013-05-20T10:31:20.030 に答える
1

それはajaxの問題ではありません。実際に使用$("#addProducts").submitしているのは、ページ送信リクエストを送信してページのリロードを引き起こすものです。送信の代わりにクリックを使用してください。

もう 1 つの間違い$("addProducts").serialize()として、ID セレクターに # を追加します。以下はサンプルコードです。

$("#addProducts").click(function(event) {
    var str = $("#addProducts").serialize();
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: "subAddProduct.php",
        data:str
    });
});
于 2013-05-20T10:33:41.807 に答える
1
<script>
  $("#addProducts").submit(function(event) {
     event.preventDefault();
     var str = $("#addProducts").serialize();
     $.ajax({
        type: "POST",
        url: "subAddProduct.php",
        data:str
     })
  });
</script>

HTMLフォーム

<form enctype="multipart/form-data" id="addProducts" action="">
...
<input type="submit" name="submit" value="submit">
</form>
于 2013-05-20T11:18:41.343 に答える
0
<script>
    $("#addProducts").submit(function(event) {
    event.preventDefault();
    var str = $("#addProducts").serialize();
      event.preventDefault();
      $.ajax({
      type: "POST",
      url: "subAddProduct.php",
      data:str
   })
    });
    return false;
</script>

フォームが正常に送信されなくなり、ページがリロードされます。Firefox は preventDefault を好まないため、後で false を返す必要があります:P

于 2013-05-20T10:29:29.693 に答える