我正在学习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();
答案 0 :(得分:0)
Localstorage是浏览器的本地存储。它只能通过运行在与数据关联的域的页面中运行的JavaScript来访问。
即。要访问域A本地存储,您必须在域A上托管一个HTML文档,其中嵌入了JS以读取数据。
域A(或任何其他域)上的服务器端代码无法读取它。
域B上的JavaScript无法准备好。
要访问域B上的数据,您需要访问域A上的一个页面,该页面将读取数据,然后将其发送到域B.您可以采取多种方法来执行此操作。我将使用的是使用<iframe>
在域B上嵌入域A页面,然后使用postMessage
传递数据。