阅读localstorage&传递为JSON

时间:2017-08-18 09:33:44

标签: javascript php json local-storage

我正在学习PHP& JSON并尝试检索本地存储数据(由域A创建)。如果它不存在,将需要查询mysql并将结果返回给客户端域B javascript变量。

据我所知,PHP无法直接访问localstorage。但当我在域A PHP文件上放置javascript时,会出现"意外令牌" 的错误。我猜输出只能包含需要传递到域B javascript变量的json数据。

我无法弄清楚如何在域A php上执行javascript / ajax来检索localstorage,查询Mysql然后将结果传递回域B javascript变量。

只是添加,我无法将PHP代码添加到域B客户端页面。

任何人都可以帮助我吗?我一直在寻找解决方案..

(域A)检查Localstorage的Javascript

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

(在域A上)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();

1 个答案:

答案 0 :(得分:0)

Localstorage是浏览器的本地存储。它只能通过运行在与数据关联的域的页面中运行的JavaScript来访问。

即。要访问域A本地存储,您必须在域A上托管一个HTML文档,其中嵌入了JS以读取数据。

域A(或任何其他域)上的服务器端代码无法读取它。

域B上的JavaScript无法准备好。

要访问域B上的数据,您需要访问域A上的一个页面,该页面将读取数据,然后将其发送到域B.您可以采取多种方法来执行此操作。我将使用的是使用<iframe>在域B上嵌入域A页面,然后使用postMessage传递数据。