jQueryの$.ajax関数を使ったがPHP側で$_POSTの値が取得できない

表題のとおり世の中のサンプルで試してみたが動かない。
「そんなことってあるの?」と思ったが前にもハマったことがある気がする。
ちなみにget送信にして$_GETで受け取ることはできる。
post送信がうまくいかない。

$.ajax({
  url: url,
  type: "post",
  data: {"id":"1"},
  contentType: 'application/JSON',
  dataType: "json",
  scriptCharset: 'utf-8',
  success: function(json_data)
  {
    // 成功時処理
    callback();
  },
    error: function()
  {
    // エラー処理
    alert('エラー');
  }
});

…下記のようにcontentTypeを’application/x-www-form-urlencoded’
に変更したらいけた。どんなブラウザでも対応しているヘッダでないと、
PHPは$_POST変数にpost受信データを読み込まないらしい。設定で変えられた気もするし、
明示的にjsonを送信していることを表したいがひとまず以下のように設定して使っている。

$.ajax({
  url: url,
  type: "post",
  data: {"id":"1"},
  contentType: 'application/x-www-form-urlencoded',
  dataType: "json",
  scriptCharset: 'utf-8',
  success: function(json_data)
  {
    // 成功時処理
    callback();
  },
    error: function()
  {
    // エラー処理
    alert('エラー');
  }
});

コメント

タイトルとURLをコピーしました