2016-04-05 12 views
0

Ich arbeite an einem Projekt mit Cookies auf der Client-Seite. Ich bin neu beim Erstellen von Cookies. Wir möchten Benutzereingaben in jedem Formular speichern. Wenn der Benutzer zu einem anderen Formular auf einer anderen Seite kommt, können wir dieses Formular automatisch mit den Eingaben aus dem vorherigen Formular ausfüllen.JavaScript-Cookies und Uncaught SyntaxError: Unerwartetes Token in Chrome

Die Seite ist in PHP und AngularJS gebaut, aber ich arbeite zuerst an einer JavaScript-Lösung, weil ich mit der AngularJS-Version kämpfe. Es funktioniert gut in FF und IE, aber Chrome gibt mir einen Fehler - Uncaught SyntaxError: Unerwarteter Token u. Ich habe andere StackOverflow-Artikel zu genau diesem Problem gelesen, aber ich verstehe nicht, wie sie sagen, dass wir es beheben können.

Meine JavaScript-Lösung hat hier seinen Ursprung: https://www.youtube.com/watch?v=P4Zlc6pdHgM

Seite ein Formular (Ich nenne es Schlüssel-Wert-pairs.html):

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<table border="1"> 
    <tr> 
    <td>First Name</td> 
    <td><input type="text" id="form_000c_fld_0_fn" /></td> 
    </tr> 
    <tr> 
    <td>Last Name</td> 
    <td><input type="text" id="form_000c_fld_0_ln" /></td> 
    </tr> 
    <tr> 
    <td colspan="2"> 
     <input type="button" value="Set Cookie" onClick="doSubmit()" /> 
     <a href="key-value-pairs-2.html">Let's see if this works</a> 
    </td> 
    </tr> 
</table> 
<script type="text/javascript"> 
    function doSubmit(){ 
     var customObject = {}; 
     customObject.name = document.getElementById("form_000c_fld_0_fn").value; 
     customObject.last = document.getElementById("form_000c_fld_0_ln").value; 
     var jsonString = JSON.stringify(customObject); 
     document.cookie = "cookieObject=" + jsonString; 
    } 

    function getCookie(){ 
     var nameValueArray = document.cookie.split("="); 
     var customObject = JSON.parse(nameValueArray[1]); 
     document.getElementById("first_name").value = customObject.name; 
     document.getElementById("last_name").value = customObject.last; 
    } 
</script> 

</body> 
</html> 

Page 2 Formular (Ich rufe dieser Schlüssel-Wert-Paare-2.html):

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body onLoad="getCookie()"> 
<table border="1"> 
    <tr> 
    <td>First Name</td> 
    <td><input type="text" id="first_name" /></td> 
    </tr> 
    <tr> 
    <td>Last Name</td> 
    <td><input type="text" id="last_name" /></td> 
    </tr> 
    <tr> 
    <td colspan="2"> 
     <a href="key-value-pairs.html">Let's test another one</a> 
    </td> 
    </tr> 
</table> 
<script type="text/javascript"> 
    function doSubmit(){ 
     var customObject = {}; 
     customObject.name = document.getElementById("form_000c_fld_0_fn").value; 
     customObject.last = document.getElementById("form_000c_fld_0_ln").value; 
     var jsonString = JSON.stringify(customObject); 
     document.cookie = "cookieObject=" + jsonString; 
    } 

    function getCookie(){ 
     var nameValueArray = document.cookie.split("="); 
     var customObject = JSON.parse(nameValueArray[1]); 
     document.getElementById("first_name").value = customObject.name; 
     document.getElementById("last_name").value = customObject.last; 
    } 
</script> 

</body> 
</html> 
+0

Der Fehler erscheint auf der zweiten Seite und wenn ich mich debuggen es entweder geschieht hier - var nameValueArray = document.cookie.split („=“); oder here - var customObject = JSON.parse (nameValueArray [1]); –

+1

Sie erhalten diesen Fehler, weil Sie versuchen, 'JSON.parse (undefined)' d. H. 'NameValueArray [1]' ist 'undefined'. Überprüfen Sie den Wert von 'nameValueArray' und vergewissern Sie sich, dass Sie Cookies korrekt analysieren. –

Antwort

0

Code geht davon aus, dass nur ein einzelner Cookie vorhanden ist. Probieren Sie diese Funktionen für das Setzen und Empfangen von Cookies ..

function setCookie(name, value) { 
    var cookie = name + "=" + escape(value) + ";"; 
    document.cookie = cookie; 
} 

function getCookie(name) { 
    var chunks = document.cookie.split(";"); 
    for(var i=chunks.length; i--;){ 
     if(chunks[i].trim().split("=")[0].trim() == name){ 
      return chunks[i].trim().split("=")[1].trim(); 
     } 
    } 
    return null; 
} 
Verwandte Themen