jQuery の ajax を使い、PHP のサーバーに向けてデータを送信しようとしたのですが、crossDomain が true のとき、サーバー側の file_get_contents('php://input') の内容が空になってしまいます。
crossDomain が false のとき(ローカル環境)は正しく JSON データを受け取れます。
html
1var param = { "foo": "bar" }; 2$.ajax({ 3 type: "POST", 4 url: "http://〜", 5 data: JSON.stringify(param), 6 crossDomain: true, 7 dataType : "jsonp", 8 scriptCharset: 'utf-8' 9}).done(function(data){ 10 console.log(data); 11}).fail(function(XMLHttpRequest, textStatus, errorThrown){ 12 alert(errorThrown); 13});
php
1header("Access-Control-Allow-Origin: *"); 2$json = file_get_contents('php://input'); 3$data = json_decode($json, true);
file_get_contents の結果は空ですが、$_GET の内容を確認すると送信した JSON データが入っていました。
ajax によって送信されたデータを正しく受け取るにはどのようにすれば良いのでしょうか?
回答3件
あなたの回答
tips
プレビュー