AJAXは2つの異なるドメイン間で動作できないことを理解します。あるWebページから別のドメインにJSONデータを送信する必要があります。このページには、そのJSONデータをDBに記録するPHPページがあります。AJAX別のドメインにJSON文字列を送信
私が試みたのは、AJAXを使用してローカルPHPファイルと通信し、そのPHPファイルを宛先ドメインのPHPファイルに置くことでした。
私のAJAXコード:
$.ajax({
url: './remote.php',
type: 'POST',
data: {
sentdata: data
},
success: function(response) {
document.getElementById("responseMsg").innerHTML = response;
}
});
私の地元のPHPファイルremote.php:destination.phpで
$url = "https://example.com/destination.php";
$data = json_encode(($_POST['sentdata']));
$build = array('http' =>
array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => $data
)
);
$context = stream_context_create($build);
$return = file_get_contents($url, false, $context);
if($return) {
echo "success";
} else {
echo "failure";
}
ドメイン上の私が持っている到達しようとしています:
$data = json_decode(file_get_contents('php://input'));
echo $data;
実行時に「失敗」と表示されます。 file_get_contents($ url、false、$ context);何も戻ってきていない。
別のドメインにAJAXを実行するためのこの戦略がうまくいかない理由はありますか?または私は何か間違っているのですか?
編集:私はまた、allow_url_fopenをは上のphp.iniの
'= ='は入力ミスですか? '$ url = =" https://example.com/destination.php ";' – Marcus
あなたは実際に別のドメインにAJAX *呼び出し*をしているわけではありません。 '。/ remote.php'はおそらく同じドメイン上で呼び出されています。他の方法で外部サーバにアクセスしているとします。 'file_get_contents()' – Marcus
はい= =はタイプミスでした。私はそれを修正しました。 Marcus、私の理解は、AJAXが外部サーバーに直接電話をかけることを許可しないということです。だから、これを回避しようとしました。私はそれが技術的にAJAXの別のドメインへの呼び出しではないことを理解しています。 – Mitch