我基本上试图将一个对象从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的变量并控制台记录它。我觉得我很接近,因为我得到[对象对象],但似乎无法打开数据集。
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
感谢任何帮助。
答案 0 :(得分:1)
这是因为您将对象直接保存到会话存储中。 你应该将它保存为JSON字符串。在会话存储中,您不应直接保存对象。
sessionStorage.setItem('mydata', JSON.stringify(data));
您可以在server.js
中检索对象和JSON.parsevar newData = sessionStorage.getItem('mydata');
console.log("From server.js:", JSON.parse(newData));
app.js中的在您的plunker代码中进行以下更改,以便存储会话存储中的数据,并在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));