2011-12-15 22 views
9

私はこの問題を理解しようとしている約2時間後に私は与えている、私は陥ってしまった、stackoverflowを助けて!jQuery AJAXポストデータが投稿されていません

それがどの

jQueryのコードを見つけた場合、エラーが返されますPHPファイルに数量と一緒に製品IDを投稿しようとすると -

$('span.add_to_cart').click(function() { 
     $('div.cart').append('<span class="loading">LOADING</span>'); 
     $.ajax({ 
      type: "POST", 
      url: "/onlineshop/scripts/add_to_cart.php", 
      dataType: "json", 
      data: { prod_id: $('input.product_id').val(), 
        quantity: $('input.quantity').val() 
      }, 
      contentType: "application/json", 
      success: function(data) { 
       $('span.loading').remove(); 
      }, 
      error: function(xhr, textStatus, thrownError, data) { 
       alert("Error: " + thrownError); 
       $('span.loading').remove(); 
      } 
     }) 
    }); 

そして、私のPHPページがちょうどprint_r($_POST)

しようとしています

私のデータを投稿していないようですが、私は多くのさまざまなことを試しましたが、投稿されたデータがないというエラーが表示されます。

+0

式を評価するのではなく、単にサンプルデータを投稿しようとしましたか?少なくとも、犯人を絞り込むのに役立つだろうか? ;-) –

+0

POSTを使用しているときは、いくつかのHTTPヘッダー、contentType: "application/x-www-form-urlencoded"を使用する必要があります。このヘッダーを指定しないと、データは送信されません。 verb POSTの後に追加してみてください。 –

答えて

15

contentTypeapplication/x-www-form-urlencodedに変更するか、デフォルト値であるため、ドロップするだけです。

+0

ビンゴ!私は私が探していた答えを見る!ありがとう、ちょうど行く2時間を過ごした、ここで何が間違っているそれはそれがちょうどそれであることを見つけるために厄介なのです。しかたがない!将来学ぶでしょう! – Silenced

+0

私は 'contentType:" application/json; charset = utf-8 "'を 'contentType:" application/x-www-form-urlencoded "に変更しました。この便利な情報を共有してくれてありがとう – JasonDavis

+0

これは私のフォームデータがなぜ何時間も送信されていなかったのかと思った後に私のためにそれを修正しました。それを落とすことはできませんでした。私は明示的に 'application/x-www-form-urlencoded'を追加しなければなりませんでした。なぜこれが必要なのか分かっていればいいと思う。 – Gavin

8

あなたの問題は、送信しているデータがあなたが送信しているcontent-typeと一致していないことです。

contentTypeは、サーバーに送信されるデータ用であり、dataTypeは、サーバーから受信されるデータ用です。

コードからcontentType: "application/json"を削除するだけです。

関連する問題