2016-12-26 23 views
1

我基本上試圖從app.js傳遞一個對象到server.js。如何將一個對象從一個JavaScript文件移動到另一個JavaScript文件?

我已經看過所有類似的問題,將變量從一個文件移動到另一個文件,但似乎無法將這些解決方案應用到我的情況中。

我有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文件,我想要檢索的變量稱爲數據和控制檯記錄它。我覺得我很近,因爲我得到[object object],但似乎無法打開數據集。

var newData = sessionStorage.getItem('mydata'); 
console.log("From server.js:", newData); 
<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 

<body> 
    <script data-require="[email protected]*" 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

這是因爲您正在將對象直接保存到會話存儲中。 您應該將其另存爲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

相關問題