Ich verstehe, dass AJAX nicht zwischen zwei verschiedenen Domänen arbeiten kann. Ich muss JSON-Daten von einer Webseite zu einer anderen Domäne senden, die eine PHP-Seite hat, die diese JSON-Daten in einer Datenbank aufzeichnet.AJAX Sende JSON Zeichenfolge an eine andere Domäne
Was ich versuchte, war AJAX verwenden, um mit einer lokalen PHP-Datei zu kommunizieren, dann haben Sie diese PHP-Datei POST zu den Ziel-Domänen PHP-Datei.
Mein AJAX-Code:
$.ajax({
url: './remote.php',
type: 'POST',
data: {
sentdata: data
},
success: function(response) {
document.getElementById("responseMsg").innerHTML = response;
}
});
My Local PHP-Datei remote.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";
}
In destination.php auf der Domain zu erreichen Ich versuche, ich habe:
$data = json_decode(file_get_contents('php://input'));
echo $data;
Wenn es läuft, sehe ich es Echo "Fehler". Die Datei_get_contents ($ url, false, $ Kontext); bekommt nichts zurück.
Gibt es einen Grund, warum diese Strategie für das Ausführen von AJAX in einer anderen Domäne nicht funktioniert? Oder mache ich etwas falsch?
EDIT: Ich überprüfte auch allow_url_fopen
Ist das '= =' nur ein Tippfehler? '$ url = =" https://example.com/destination.php ";' – Marcus
Und du machst eigentlich keinen AJAX * -Anruf * an eine andere Domain. Sie rufen './Remote.php' an, vermutlich auf derselben Domain, die wiederum über andere Methoden auf einen externen Server zugreift, z. 'file_get_contents()' – Marcus
Ja = = war ein Tippfehler, ich habe es korrigiert. Marcus, mein Verständnis ist, dass AJAX dir nicht erlauben wird, den Anruf direkt an den externen Server zu richten, also war das mein Versuch, das zu umgehen. Ich verstehe Es ist technisch kein AJAX-Anruf zu einer anderen Domäne. – Mitch