我基本上试图将一个对象从 app.js 传递到 server.js。
我已经研究了所有将变量从一个文件移动到另一个文件的类似问题,但我似乎无法将这些解决方案应用到我的情况中。
我有 2 个 JavaScript 文件和 1 个 html 文件。在第一个 javascript 文件中,我从 app.js 获取数据并将其放入变量数据中:
$(function() {
$.getJSON('http://api.stackexchange.com/2.2/questions/unanswered?page=1&pagesize=5&order=desc&sort=activity&site=stackoverflow', function(data) {
console.log(data);
})
sessionStorage.setItem('mydata', data);
});
在 server.js 文件中,我尝试检索名为 data 的变量并控制台记录它。我觉得我很接近,因为我得到了 [object object],但似乎无法将其打开到数据集。
var newData = sessionStorage.getItem('mydata');
console.log("From server.js:", newData);
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script data-require="jquery@*" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
<script src="app.js"></script>
<script src="server.js"></script>
</body>
</html>
如果更容易看到的话,我在 plunker 上也有这个例子:http://plnkr.co/edit/kqwvW545sDKDMr0kidcd
感谢任何帮助。
这是因为您将对象直接保存到 session 存储中。您应该将其保存为 JSON 字符串。在 session 存储中,您不应直接保存对象。
sessionStorage.setItem('mydata', JSON.stringify(data));
您可以检索该对象并在 server.js 中进行 JSON.parse
var newData = sessionStorage.getItem('mydata');
console.log("From server.js:", JSON.parse(newData));
在 app.js 中,对 plunker 代码进行以下更改,以便存储 session 存储中的数据,并在 ajax 调用完成后加载 server.js。
$(function() {
$.getJSON('http://api.stackexchange.com/2.2/questions/unanswered?page=1&pagesize=5&order=desc&sort=activity&site=stackoverflow', function(data) {
console.log("resp",data);
sessionStorage.setItem('mydata', JSON.stringify(data));
$.getScript( "server.js", function( data, textStatus, jqxhr ) {
});
})
});
在 server.js 中
var newData = sessionStorage.getItem('mydata');
console.log("From server.js:", JSON.parse(newData));
http://plnkr.co/edit/bEXEBZxPByjErmMTNblf?p=preview
我是一名优秀的程序员,十分优秀!