问题描述:

I am trying to save variable in cookie and then retrieve it, so far i can save just a text and page url and then retrieve it where ever i want.

Could u please help me out with it?for example in this code i want to save $room and $renthome values in cookie.

this is my current code

<!DOCTYPE html>

<html>

<head>

<title>New page string name</title>

<link rel="stylesheet" href="css/reset.css"> <!-- Resource style -->

<link rel="stylesheet" type="text/css" href="css/buy-rent.css" />

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<script>

function createCookie(name, value, days) {

var expires = '',

date = new Date();

if (days) {

date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));

expires = '; expires=' + date.toGMTString();

}

document.cookie = name + '=' + value + expires + '; path=/';

}

/*

* Read cookie by name.

* In your case the return value will be a json array with list of pages saved.

*/

function readCookie(name) {

var nameEQ = name + '=',

allCookies = document.cookie.split(';'),

i,

cookie;

for (i = 0; i < allCookies.length; i += 1) {

cookie = allCookies[i];

while (cookie.charAt(0) === ' ') {

cookie = cookie.substring(1, cookie.length);

}

if (cookie.indexOf(nameEQ) === 0) {

return cookie.substring(nameEQ.length, cookie.length);

}

}

return null;

}

/*

* Erase cookie with name.

* You can also erase/delete the cookie with name.

*/

function eraseCookie(name) {

createCookie(name, '', -1);

}

var faves = new Array();

function isAlready(){

var is = false;

$.each(faves,function(index,value){

if(this.url == window.location.href){

console.log(index);

faves.splice(index,1);

is = true;

}

});

return is;

}

$(function(){

var url = window.location.href; // current page url

$(document.body).on('click','#addTofav',function(e){

e.preventDefault();

var pageTitle = $(document).find("title").text();

if(isAlready()){

} else {

var fav = {'title':pageTitle,'url':url};

faves.push(fav);

}

var stringified = JSON.stringify(faves);

createCookie('favespages', stringified);

location.reload();

});

var myfaves = JSON.parse(readCookie('favespages'));

if(myfaves){

faves = myfaves;

} else {

faves = new Array();

}

});

</script>

</head>

<body>

<a href="javascript:void(0);" id="addTofav">Add me to fav</a>

<div class="img">

<div class="desc">

<ul id="appendfavs">

</ul>

</div>

</div>

<?php

error_reporting(0);

include("config.php");

$quer= "SELECT*FROM ".$db_table." ";

$query=mysqli_query($connect,$quer)

or die(mysqli_error());

?>

<?php while($row = mysqli_fetch_array($query)):

$idhome= $row['idhome'];

$room=$row['room'];

$renthome=$row['renthome'];

$pricehome=$row['pricehome'];

?>

<?php endwhile;?>

</body>

</html>

网友答案:

In jQuery, you should use jquery.cookie plugin.

This creates a cookie

$.cookie(name, value [, options]);

and then retrieve it value

$.cookie(name);
网友答案:

I use jQuery Cookie

https://github.com/carhartl/jquery-cookie

usage: $.cookie('name', 'value');

retrieving: $.cookie('name'); // => "value"

In order to save complex data in a cookie, do the following:

1) save the whole data in an object. Something like var cookieData = {};, and then you can add properites like cookieData.date = yourDate; cookieData.myUrl=yourUrl;

2) transfer the object to a sting using JSON.stringify

3) save the string in the cookie.

Now, in order to use it again -

1) retrieve the cookie (See the code above)

2) Turn the string back into an object using JSON.parse

3) Fetch the data you desire from the object

网友答案:

You can generate in PHP <script> block which will save the variable. Example show saving cookie named room by $room value.

<script>
     createCookie("room", "<?= $row['room'] ?>", 2);
</script>

another (and I think better) way is to set the cookie by PHP.

<?php setcookie("room", $row['room'], 2 * 24 * 60 * 60 * 1000); ?>

Don't forget that if you want to set cookie by PHP yhou have to do it before send any output. In your case you have to prepare output, set cookie and then send the output.

相关阅读:
Top