我有一個名爲search.jsp的頁面。當用戶選擇一條記錄並按下一個編輯按鈕時,我想用記錄數據(存儲在json對象中並傳遞給新頁面)打開一個新頁面(在同一個窗口中)。我如何使用Javascript(或jQuery)打開一個新頁面並傳遞JSON數據?JavaScript - 如何打開新頁面並將JSON數據傳遞給它?
回答
如果這兩個網頁位於同一個域,第三方法是使用HTML5的localStorage:http://diveintohtml5.info/storage.html
事實上localStorage的恰恰是用於你想要什麼。處理GET參數或窗口/文檔JS引用不是很便攜(即使我知道所有瀏覽器都不支持localStorage)。
我認爲本地存儲受限於域(雖然我不記得細節)?畢竟,你不希望惡意。網站.com訪問your.bank.com設置的localStorage? – machineghost
你是完全正確的。這個問題以某種方式問我認爲這兩個頁面將在同一個域上。精確地編輯答案。而我發現其他解決方案有點難看.. – Ulflander
是的;這兩個頁面都在同一個域中,所以這將工作得很好。使用後我必須小心清理存儲空間。 – James
如果JSON足夠小,則可以在打開新窗口時將其作爲GET參數包含在URL中。
喜歡的東西:
window.open(yourUrl + '?json=' + serializedJson)
但我更喜歡傑克的答案;沒有JSON長度限制,並且在用戶可以看到的URL中沒有巨大的JSON混亂。 – machineghost
我最近遇到了這個聲明,「如果JSON足夠小」 小到足夠小以及涉及的邊界是什麼? – Jay
http://stackoverflow.com/questions/2659952/maximum-length-of-http-get-request – machineghost
嗯,例如,你有對象
var dataObject = {
param : 'param',
param2 : 'param2'
};
您可以透過JSON.stringify方法
var dataObjectString = JSON.stringify(dataObject);
那麼你應該使用Base64編碼爲您的數據編碼它翻譯成字符串(的base64編碼/解碼方法可以在搜索引擎中輕鬆找到)
var dataObjectBase64 = base64encode(dataObjectString);
你會得到最後
iframe src="http://page.com/?data=e3BhcmFtIDogJ3BhcmFtJyxwYXJhbTIgOiAncGFyYW0yJ307"
,扭轉加載的頁面上的操作:這樣的事情
e3BhcmFtIDogJ3BhcmFtJyxwYXJhbTIgOiAncGFyYW0yJ307
然後你就可以通過這個字符串作爲參數。
您可以創建一個帶有隱藏/文本輸入值的「即時」表單,這將保存json值,然後您可以通過javascript提交此表單。
事情是這樣的......
即時通訊使用jQuery和下劃線(模板目的)
這
<form method='<%= method %>' action="<%= action %>" name="<%= name %>" id="<%= id %>" target="_blank">
<input type='hidden' name='json' id='<%= valueId %>' />
</form>
然後你可以使用後它的JavaScript
模板function makePost(){
var _t = _.template("use the template here");
var o = {
method : "POST",
action :"someurl.php",
name : "_virtual_form",
id : "_virtual_form_id",
valueId : "_virtual_value"
}
var form = _t(o); //cast the object on the template
//you can append the form into a element or do it in memory
$(".warp").append(form);
//stringify you json
$("#_virtual_value").val(JSON.stringify(json));
$("#_virtual_form_id").submit();
$("#_virtual_form_id").remove();
}
現在你做nt不得不擔心你的長度或者發送多少個變量。
最好!
下面是將對象轉換爲JSON並將其提交到另一頁一些非常簡單的純JavaScript(沒有HTML,沒有jQuery的):
/*
submit JSON as 'post' to a new page
Parameters:
path (URL) path to the new page
data (obj) object to be converted to JSON and passed
postName (str) name of the POST parameter to send the JSON
*/
function submitJSON(path, data, postName) {
// convert data to JSON
var dataJSON = JSON.stringify(data);
// create the form
var form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', path);
// create hidden input containing JSON and add to form
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", postName);
hiddenField.setAttribute("value", dataJSON);
form.appendChild(hiddenField);
// add form to body and submit
document.body.appendChild(form);
form.submit();
}
使用一些PHP這樣的目標頁面上獲得JSON :
$postVarsJSON = $_POST['myPostName'];
$postVars = json_decode($postVarsJSON);
或者更簡單地對JavaScript:
var postVars = JSON.parse(<?php $_POST['myPostName']; ?>);
- 1. 從main.js打開頁面,並將數據傳遞給它
- 2. 如何將json數據傳遞給頁面?
- 3. 如何將參數傳遞給Javascript中的新頁面?
- 4. JqueryMobile(JQM),Json並將數據傳遞到一個新頁面
- 5. 將分頁數據傳遞給頁面
- 6. 如何將aray數據傳遞給asp.net頁面的javascript代碼?
- 7. jqmodal並將數據傳遞給它?
- 8. 如何將參數傳遞給頁面?
- 9. 如何將變量從php頁面傳遞給javascript並顯示數據
- 10. 如何打開VF頁面作爲彈出窗口並將參數傳遞給VF頁面?
- 11. 將數據傳遞給通知頁面
- 12. 如何在頁面加載時將JSON傳遞給網頁?
- 13. 如何將POST jquery中的變量傳遞給打開的新頁面
- 14. 通過jquery傳遞變量,打開php頁面並提取它
- 15. 如何將rails數據傳遞給javascript?
- 16. 用json數據打開新頁面而不刷新頁面
- 17. 如何將數據傳遞給jsp並在servlet中的新窗口中打開它
- 18. 打開一個新窗口,並將參數傳遞給它vb.net asp
- 19. 將JSON數據傳輸到新頁面
- 20. 如何在新窗口中打開頁面併發送數據?
- 21. 將ID數據傳遞到新頁面
- 22. 如何將數據傳遞給調用者頁面?
- 23. javascript將值傳遞給彈出頁面
- 24. 將JavaScript傳遞給WordPress頁面模板?
- 25. 將值從javascript傳遞給jsp頁面
- 26. 如何將值傳遞給父頁面上的JavaScript函數?
- 27. 如何將值傳遞給aspx頁面中的javascript函數onClientClick
- 28. 如何將參數傳遞給另一個控制器並在ruby中打開新頁面
- 29. 如何將數據從javascript傳遞給json
- 30. 將ajax頁面的值傳遞給調用頁面javascript函數
感謝大家的答覆。這些網頁位於同一個域中。我很抱歉沒有在原始文章中包含這些內容。 – James