2013-05-03 33 views
3

我有一個簡單的HTML頁面和JS腳本: HTML頁面:jQuery的cookie的值是%5Bobject%20Object%5D

<body> 
<input type="text" id = "content"> 
<button type="button" id="btn"> Save </button> 
</body> 

的Javascript:

$(document).ready(function(){ 
    var cook = $.cookie('theName', { path: '/'}); 
    if (cook) 
     alert(cook); 
    $('#btn').click(function(){ 
     var theName = $('#content').val(); 
     alert(v.val()); 
     $.cookie('theName', theName, { path: '/', expires: 7 }); 
     alert("Cookie done"); 
    }); 
}); 

庫:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"> </script> 
<script type="text/javascript" src = "https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js"> </script> 

它應該保存我的名字,當我刷新顯示我的名字。唯一的問題是當我嘗試讀取cookie時,而不是名稱顯示%5Bobject%20Object%5D。

謝謝。

+0

你試過了:var cook = $ .cookie('theName'); ? – 2013-05-03 09:35:36

+0

是的,但'煮'是未定義的。 – 2013-05-03 09:50:09

+0

'%5Bobject%20Object%5D'是'[object Object]',即對象的默認字符串表示。 – 2013-05-03 09:55:11

回答

5

做:

$(document).ready(function(){ 
    var cook = $.cookie('theName'); //get from cookie if exists 
    if (cook) 
     alert(cook); 
    $('#but').click(function(){ 
     var theName = $('#content').val(); 
     alert(theName); 
     $.cookie('theName', theName, { expires: 7, path: '/' }); //set the cookie 
     alert("Cookie done"); 
    }); 
}); 

更新時間:

嘗試添加:

$.cookie.raw = true; 
+0

我已經試過這個,但是當我讀取cookie時沒有路徑,變量cook是未定義的。 – 2013-05-03 09:51:15

+0

@AlinC $ .cookie('your_cookie');用於獲取cookie的值,如果它的設置,使用路徑將設置它 – 2013-05-03 10:09:57

+1

@AlinC嘗試添加$ .cookie.raw = true;如在我更新的答案 – 2013-05-03 10:12:00

0

嘗試。

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function getCookie(c_name) 
{ 
var c_value = document.cookie; 
var c_start = c_value.indexOf(" " + c_name + "="); 
if (c_start == -1) 
{ 
c_start = c_value.indexOf(c_name + "="); 
} 
if (c_start == -1) 
{ 
c_value = null; 
} 
else 
{ 
c_start = c_value.indexOf("=", c_start) + 1; 
var c_end = c_value.indexOf(";", c_start); 
if (c_end == -1) 
{ 
c_end = c_value.length; 
} 
c_value = unescape(c_value.substring(c_start,c_end)); 
} 
return c_value; 
} 

function setCookie(c_name,value,exdays) 
{ 
var exdate=new Date(); 
exdate.setDate(exdate.getDate() + exdays); 
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
document.cookie=c_name + "=" + c_value; 
} 

function checkCookie() 
{ 
var username=getCookie("username"); 
if (username!=null && username!="") 
    { 
    alert("Welcome again " + username); 
    } 
else 
    { 
    username=prompt("Please enter your name:",""); 
    if (username!=null && username!="") 
    { 
    setCookie("username",username,365); 
    } 
    } 
} 
</script> 
</head> 
<body onload="checkCookie()"> 
</body> 
</html> 

希望這會有所幫助。

來源:Here

+0

w3schools是最糟糕的資源之一。 http://w3fools.com/。爲什麼他應該使用這個而不是廣泛使用的jQuery插件? – 2013-05-03 09:55:55

+0

@FelixKling - 感謝您的建議。 根據他的cookie需求查詢,這個w3School建議的代碼適用於他的目的。我同意使用jquery插件,但是會讓它由Alin C來決定。 – Nitesh 2013-05-03 09:58:46

+0

@Nathan Lee,謝謝你的回答,但我打算使用jQuery。 – 2013-05-03 10:07:45

3
var cook = $.cookie('theName', { path: '/'}); 

這將覆蓋與{ path: '/'}的字符串表示的cookie。

要實際檢索現有的Cookie只是通過名稱:

var cook = $.cookie('theName'); 

有不管怎樣經過的路徑上沒有一點 - 如果你是該cookie設置你根本拿不到路徑之外它根本就沒有。

+0

返回未定義。 – 2013-05-03 10:03:13