如何将对象从一个javascript文件移动到另一个javascript文件?

时间:2016-12-26 03:02:14

标签: javascript jquery api

我基本上试图将一个对象从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

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这是因为您将对象直接保存到会话存储中。 你应该将它保存为JSON字符串。在会话存储中,您不应直接保存对象。

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代码中进行以下更改,以便存储会话存储中的数据,并在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