2017-08-18 22 views
0

Imを学んでPHP & JSONを学習し、(ドメインAによって作成された)ローカルストレージデータを取得しようとしています。それが存在しない場合は、mysqlに問い合わせてクライアント側のドメインBのjavascript変数に結果を返す必要があります。localstorageを読み込み、JSON

私が理解するように、PHPはlocalstorageに直接アクセスできません。しかし、ドメインAのPHPファイルにjavascriptを置くと、「予期しないトークン」のエラーがあります。出力には、ドメインBのjavascript変数に渡す必要があるjsonデータのみが含まれていると思います。

ドメインAのPHPでlocalstorageを取得するためにjavascript/ajaxを実行する方法がわかりませんでした。クエリmysqlは結果をドメインBのjavascript変数に返します。

ドメインBのクライアントサイドページにPHPコードを追加できません。

誰でも手伝ってもらえますか?私は..日間のためのソリューションを探している

(ドメインAオン)のlocalStorage

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

をチェック(ドメインA)JavascriptをPHP +のlocalStorageデータ

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

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

    echo $myJSON; 
?> 

(ドメイン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(); 

答えて

0

Localstorageはブラウザのローカルです。これは、データが関連付けられているドメイン上のページで実行されているJavaScriptによってのみアクセスできます。

つまり、ドメインAのローカルストレージにアクセスするには、データを読み取るためにドメインAにJSが埋め込まれたHTMLドキュメントが埋め込まれている必要があります。

ドメインA(または他のドメイン)上のサーバー側のコードは読み取れません。

ドメインBのJavaScriptは準備ができていません。

ドメインBのデータにアクセスするには、データを読み取ってドメインBに送信するドメインAのページにアクセスする必要があります。これを行うには、さまざまな方法があります。私が使用する方法は、を使用してドメインAのページをドメインBに埋め込み、次にpostMessageを使用してデータを渡すことです。

+0

こんにちはクエンティン、迅速な対応に感謝します。はい、私はあなたがあまりにも言及したようにドメインAのローカルストレージキーを作成するためにiframeを使用しました。 PostMessageが面白そうに見えますが、私は前にこれを見つけていません。 これはJavaScriptで動作しますか、フレーム間でデータをどのようにポストしますか?あなたが見ることができるいくつかのリソースを持っていますか、どんなサンプルもすばらしいでしょう:) – codebox

+0

postMessageは異なる起源のフレーム間で通信するためのブラウザAPIです。 [MDNには包括的なガイドがあります(https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)。つまり、あるドメインにイベントリスナーがあり、そのイベントをトリガーするために、他のドメインからpostMessageを呼び出すとします。イベントオブジェクトにデータを含めることができます。 – Quentin

+0

ありがとう@クエンティン!!私はこれが現在どのように機能し、変数を渡すことができるかを見ています:D – codebox

関連する問題