2016-09-29 7 views
1

Ich öffne neue Seite von anothe wie folgt aus:Wie übertragen Sie Werte zwischen HTML-Seiten?

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)); 

die zweite HTML-Seite sieht wie folgt aus:

<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> 

auf der Seite Öffnung in dem neuen Fenster habe ich ein paar Felder ausfüllen . Zum Beispiel habe ich "Code" Feld auf der ersten Seite ausgefüllt und muss das "Code" Feld in der geöffneten Seite füllen. Wie macht man das? Der zweite Teil der Frage ist, dass ich einige Felder auf der Seite geöffnet habe, wie documentId und muss es an die erste Seite übergeben, die ich von nah an, zum Beispiel oder auf dem Feld, aufgerufen habe . Wie man das perforrem?

+3

Abfrage-Zeichenfolge die einfachste Lösung wäre. – epascarello

+0

Was ist Ihre serverseitige Sprache? Dies geschieht normalerweise auf der Server-Seite, –

+0

@Koks_rs Ich habe keinen Zugriff auf die Server-Seite, wenn ich dich gut verstanden habe. Eigentlich habe ich nur einen Platz, um das alles zu verwalten - es ist die js auf dem Knopf, der auf der "ersten Seite" platziert ist. So kann ich Daten davon erhalten, ich kann auch Daten in die Felder posten, aber es könnte einfach sein, wenn alles auf einer Seite ist. In meinem Fall kann ich Daten mit js bekommen, es irgendwie auf die andere Seite (die auf der anderen Domain ist) posten und dann muss ich es auf die Seite zurückbringen, es geöffnet von –

Antwort

2

In HTML5 können Sie Session verwenden Objekt von Seite zu einem anderen zu übergeben:

// Daten speichern zu session

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

// Lassen Sie sich von session gespeicherten Daten

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

// Entfernen gespeicherter Daten von sessionStorage

sessionStorage.removeItem('key') 

Für weitere Referenz können Sie here überprüfen

Edit: Beispielcode: 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> 

den folgenden Code Versuchen für den Test Zweck se.

+0

Ich habe sessionStorage.setItem ausgeführt ('someThing', '1'); auf der ersten Seite aber Ausführung von var etwas = sessionStorage.getItem ('someThing'); auf der zweiten Seite gibt null in 'etwas' –

+0

sagen, mehr Preise gibt es einige Werte im Session-Speicher, wie ich über Chrome-Dev-Tools sehe, aber das Problem ist das gleiche: auf der anderen Seite kann ich keine Werte –

+0

haben Sie haben versucht, dieselbe Sitzung auf beiden Seiten beizubehalten, da der Wert nach dem Schließen der Sitzung verloren geht. – shishir

1

hallo, wenn Sie übertragen Daten in irgendeiner Seite, die Sie local unsere session in js

Unterschied zwischen session klar verwenden können, wenn Sie in der Nähe Browser und local klar sein wird, nur, wenn Sie es fragen

go beziehen sich auf Dokumentation für sintax zB:

Sie Wert wird in 'Daten' Variable in diesem Beispiel

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

nach y STAK ou kann auf anderen Seite nehmen:

sessionStorage.getItem('nameyourvar') 
+0

Ich habe sessionStorage.setItem ausgeführt ('someThing ',' 1 '); auf der ersten Seite, aber Ausführung von var etwas = sessionStorage.getItem ('Etwas'); auf der zweiten Seite gibt Null in 'etwas' –

+0

sagen teurer Preise gibt es einige Werte im Session-Speicher, wie ich über Chrome-Dev-Tools sehe, aber das Problem ist das gleiche: auf der anderen Seite kann ich keine Werte erhalten –

+0

ja Wenn Sie die Domäne ändern Sie können diesen Wert Sitzungsspeicher oder localstorage Bereich in einem Fenster nicht halten, wenn Sie Fenster nicht öffnen und Sie in App sessionStorage umleiten Wert beibehalten, aber wenn Wert für andere Site-Speicher beibehalten Wert beibehalten, aber nach – InitialCrow

0

Sie GET Parameter verwenden können.

Wenn Sie zweite Seite sind zu öffnen, übergeben Sie alle Daten, die Sie als GET Parameter in der URL übergeben werden sollen, zum Beispiel:

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)); 

Machen Sie eine JS-Funktion zu erhalten Parameter auf der zweiten Seite:

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; 
} 

Dann diese Funktion verwenden, um uRL-Parameter wie diese:

params = getParams(); 

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

Dies wird wieder eine Ausgabe wie:

code : your_code 
parameter2 : parameter2_value 

PHP helfen Ihnen, um dieses Problem mit noch kürzeren Code erhalten

Zum Beispiel in PHP, erhalten die Parameter code, werden Sie nur noch zu schreiben:

$code = $_GET['code']; 

Und es wird Ihnen eine Variable zuweisen namens code den Wert, den Sie in der uRL gegen code Parameter übergeben haben (your_code in diesem Beispiel).

1

Verwenden Sie eine Abfragezeichenfolge. Dafür sind sie da. Vergessen Sie nicht, Ihre Werte in encodeURIcomponent zu verpacken, falls sie Sonderzeichen enthalten.

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

Im neuen Fenster können Sie die Werte aus der Abfrage-String wie dieser ist

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" 

Funktion erhalten von here.

1

Da andere Leute localstorage erwähnen, sollten Sie wissen, dass localstorage nicht in allen Browsern unterstützt wird. Wenn Sie etwas so verwenden möchten (Sie sollten stattdessen Abfragezeichenfolgen verwenden), können Sie diese cross browser database Library Ich schrieb.

Legen Sie Ihre Elemente in die Datenbank auf der ersten Seite

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

Ihre Artikel von der zweiten Seite anzeigen

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