2016-09-29 108 views
1

我從anothe這樣打開新的一頁:如何在html頁面之間傳遞值?

var openedwidow = window.open(billhref, '', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, (screen.availWidth - w)/2)+',top='+Math.max(0, (screen.availHeight - h)/2)); 

第二html頁面看起來是這樣的:

<div class="row contractor_data__item"> 
    <label for="code">Номер</label> 
    <input type="text" name="code" id="code" disabled/> 
    <input type="hidden" name="documentId" id="documentId"> 
    <input type="hidden" name="actId" id="actId"> 
    <input type="hidden" name="actCode" id="actCode"> 
</div> 

在新窗口中打開網頁我有幾個字段填寫。例如,我在第一頁填寫了「代碼」字段,並且需要填寫打開的頁面中的「代碼」字段。這個怎麼做?

問題的第二部分是我已經在打開的頁面上填充了一些字段,例如documentId,並且需要將它傳遞給我從關閉時調用該頁面的第一頁,例如或填充字段。如何處理這個?

+3

查詢字符串將是最簡單的解決方案讓您的項目。 – epascarello

+0

什麼是您的服務器端語言?這通常在服務器端完成, –

+0

@Koks_rs如果我理解你的話,我無法訪問服務器端。其實我只有一個地方來管理這一切 - 它是放在「第一頁」上的按鈕上的js。所以我可以從中獲取數據,我也可以將數據發佈到字段中,但如果所有內容都放在一個頁面上,可能會很容易。在我的情況下,我可以用js獲取數據,以某種方式將其發佈到其他頁面(位於其他域),然後我需要將它返回到頁面,它從 –

回答

2

在HTML5中,你可以使用會話從頁面傳遞對象到另一個對象:

//將數據從sessionStorage的sessionStorage的到

sessionStorage.setItem('key', 'value'); 

//獲取已保存的數據

var data = sessionStorage.getItem('key'); 

//刪除sessionStorage中保存的數據

sessionStorage.removeItem('key') 

有關進一步的參考,您可以檢查here

編輯: 示例代碼: Page1.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Page1</title> 
    <script type="text/javascript"> 
     sessionStorage.setItem("name","ShishirMax"); 
     var fName = sessionStorage.getItem("name"); 
     console.log(fName); 

     function myFunction(){ 
      window.open("page2.html"); 
     } 
    </script> 
</head> 
<body> 
This is Page 1 
</br> 
<button onclick="myFunction()">SendThis</button> 
</body> 
</html> 

Page2.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Page 2</title> 
</head> 
<body> 
This is Page 2</br> 
<input type="text" name="txtName" id="txtName" value=""> 
<script type="text/javascript"> 
     var fName = sessionStorage.getItem("name"); 
     console.log(fName); 

     document.getElementById("txtName").value = fName; 
    </script> 
</body> 
</html> 

試試下面的代碼爲測試purpo SE。

+0

我執行了sessionStorage.setItem('someThing','1');在第一頁,但執行var something = sessionStorage.getItem('someThing');在第二頁給出空'東西' –

+0

說價格更高價格在會議商店有一些價值,因爲我通過鉻開發工具看到,但問題是相同的:在其他頁面我無法獲得值 –

+0

有您嘗試在這兩個頁面上保持相同的會話,因爲一旦會話關閉,該值就會丟失。 – shishir

1

您好,如果你想在一些頁面傳輸數據,可以使用localStorage的我們的sessionStorage在JS

差的sessionStorage清晰之間,當你關閉瀏覽器和localStorage的很清楚只有當你問它

去指對於sintax如文檔:

你值y之後STAK在 '數據' 變量在此例如

var data; 
sessionStorage.setItem('nameyourvar', data); 

ou可以搭配其他頁面:

sessionStorage.getItem('nameyourvar') 
+0

打開我執行了sessionStorage.setItem('someThing ','1');在第一頁,但執行var something = sessionStorage。的getItem( '東西');在第二頁給出空'東西' –

+0

說更多價格會議商店有一些價值,因爲我通過鉻開發工具看到,但問題是相同的:在其他頁面上我無法獲得值 –

+0

是如果你更改域,你不能保持這個值會話存儲或本地存儲範圍是在一個窗口,如果你不打開窗口,並在應用sessionStorage重定向保持價值,但如果你想保持價值爲其他網站本地存儲保持價值,但認爲要銷燬 – InitialCrow

0

您可以使用GET參數。

當你打開第二頁,通過所有你想傳遞作爲URL GET參數的數據,例如:

var billhref = "whatever.html?code=your_code&parameter2=parameter2_value" ; 

var openedwidow = window.open(billhref, '', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, (screen.availWidth - w)/2)+',top='+Math.max(0, (screen.availHeight - h)/2)); 

做一個JS函數來獲取第二頁上的參數:

function getParams() { 

    var params = {}, 
     pairs = document.URL.split('?') 
       .pop() 
       .split('&'); 

    for (var i = 0, p; i < pairs.length; i++) { 
      p = pairs[i].split('='); 
      params[ p[0] ] = p[1]; 
    }  

    return params; 
} 

然後用這個函數來獲取URL參數是這樣的:

params = getParams(); 

for(var i in params){ 
    console.log(i + ' : ' + params[i]); 
} 

這將返回輸出,如:

code : your_code 
parameter2 : parameter2_value 

使用PHP將幫助你解決這個問題得到具有更短的代碼

例如,在PHP中,得到參數code,只是會寫:

$code = $_GET['code']; 

,它會給你分配一個指定的變量code您在傳遞的url,對code參數的值(在本例中爲)。

1

使用查詢字符串。這就是他們的目的。不要忘記在encodeURIcomponent中包含你的值,以防它們包含任何特殊字符。

window.open("somewhere.html?firstname="+encodeURIComponent(firstname)+"&lastname="+encodeURIComponent(lastname)+""); 

在新窗口中你可以從查詢字符串值這樣

function getParameterByName(name, url) { 
    if (!url) url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
     results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

var firstname = getParameterByName('firstname'); // "Bob" 
var lastname = getParameterByName('lastname'); // "Dole" 

功能是從here

1

由於其他人提到localstorage,您應該知道所有瀏覽器都不支持localstorage。如果你有興趣使用類似的東西(你應該真的使用查詢字符串),你可以看看我寫的這個cross browser database Library

設置的第一頁

jSQL.load(function(){ 
    jSQL.createTable("UserData", [{FirstName: "Bob", LastName: "Dole"}]); 
    jSQL.persist(); // Save the data internally 
}); 

在您的項目將數據庫從第二頁

jSQL.load(function(){ 
    var query = jSQL.query("SELECT * FROM `UserData`").execute(); 
    var row = query.fetch("ASSOC"); 
    var firstname = row.FirstName; 
    var lastname = row.LastName; 
});