2017-08-18 1 views
0

Ich lerne PHP & JSON und versuchen, eine lokale Speicherdaten (erstellt von Domäne A) abrufen. Wenn sie nicht existiert, muss sie mysql abfragen und das Ergebnis an die JavaScript Variable candidateside Domain B zurückliefern.Lesen Sie localstorage & pass als JSON

Was ich verstehe ist, dass PHP lokalen Speicher nicht direkt zugreifen kann. Aber wenn ich Javascript auf Domain A PHP-Datei platzieren, gibt es einen Fehler von "Unerwartetes Token". Ich denke, die Ausgabe kann nur die JSON-Daten enthalten, die an die JavaScript-Variable der Domäne B übergeben werden müssen.

Ich konnte nicht herausfinden, wie man Javascript/Ajax auf Domain A PHP ausführen, um Localstorage abzurufen, mysql abfragen und dann das Ergebnis zurück an Domain B Javascript Variable übergeben.

Nur um hinzuzufügen, dass ich php-Code nicht hinzufügen kann, Seite der Domäne B Clientside.

Jeder kann mir helfen? Ich habe seit Tagen für Lösung gesucht ..

(Domain A) Javascript, das die localstorage

<script src="http://....../localstorage.js"></script> 
store('ID'); //retrieve localstorage value 

(On Domain A) PHP + localstorage Daten

<?php 
    //Get localstorage data 
    //If localstorage is null, perform MySql query check 

    $myObj->name = $result; // 
    $myJSON = json_encode($myObj); 

    echo $myJSON; 
?> 

prüft (Auf Domäne B) Javascript - Clientside

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     var myObj = JSON.parse(this.responseText); 
     document.getElementById("demo").innerHTML = myObj.name; 
    } 
}; 
xmlhttp.open("GET", "fileon_DomainA.php", true); 
xmlhttp.send(); 

Antwort

0

Der lokale Speicher ist lokal für den Browser. Es kann nur über JavaScript aufgerufen werden, das auf einer Seite der Domäne ausgeführt wird, mit der die Daten verknüpft sind.

, d. H. Um auf den lokalen Speicher der Domäne A zugreifen zu können, muss ein HTML-Dokument in der Domäne A mit JS eingebettet sein, um die Daten zu lesen.

Server-Seitencode auf Domäne A (oder einer anderen Domäne) kann es nicht lesen.

JavaScript auf Domäne B kann es nicht vorbereiten.

Um Zugriff auf die Daten von Domäne B zu erhalten, müssen Sie eine Seite auf Domäne A besuchen, die die Daten liest und dann an Domäne B sendet. Es gibt eine Reihe von Möglichkeiten, dies zu tun. Die eine, die ich verwenden würde wäre, eine Domain A-Seite auf Domain B mit einem einzubetten und dann die Daten mit postMessage übergeben.

+0

hey quentin, danke für die schnelle Antwort. Ja, ich habe iframe verwendet, um den lokalen Speicherschlüssel für Domäne A zu erstellen, wie Sie bereits erwähnt haben. PostMessage sieht interessant aus, ich bin nicht schon einmal darauf gestoßen. Funktioniert das mit Javascript oder wie werden Daten zwischen Frames gepostet? Haben Sie irgendeine Ressource, die ich betrachten könnte oder irgendeine Probe würde fantastisch sein? – codebox

+0

postMessage ist eine Browser-API für die Kommunikation zwischen Rahmen auf verschiedenen Ursprüngen. [MDN hat eine umfassende Anleitung] (https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). Kurz gesagt, Sie haben einen Ereignis-Listener in einer Domäne und dann rufen Sie postMessage von der anderen, um dieses Ereignis auszulösen. Sie können Daten in das Ereignisobjekt aufnehmen. – Quentin

+0

Danke @Quentin !! Ich sehe, wie das jetzt funktioniert und Variablen weitergeben kann: D – codebox