1. 程式人生 > >jQuery的Cookie封裝,與PHP互動

jQuery的Cookie封裝,與PHP互動

首先,用到兩個jQuery函式,JSON.parse(Json字串轉物件)和JSON.stringify(物件轉JSON字串)

我這裡的分成兩次封裝,因為資料不在一個頁面裡。

這是第一個頁面:

$(".color-gray").click(function(){
		var detail = new Object();//自定義一個空物件 將獲取的引數放入這個物件
		detail.userName = $('input[data-node="userName"]').val();
		detail.userSex = $(".userSex").val();
		detail.detail = $('input[data-node="address"]').val();
		detail.phone = $('input[data-node="telephone"]').val();
		detail.id = $('input[name="address_id"]').val();
		
		$.cookie("info", JSON.stringify(detail));//用JSON.stringify函式將物件轉成JSON字串,放入Cookie裡。
		location.href = "{pigcms{:U('User/adres_map')}";
	});

第二個頁面:
$(".addresslist").live('click', function(){
		info = JSON.parse($.cookie('info'));//因為第一個頁面中封裝的Cookie是JSON字串,這裡要先轉成物件。再將本頁面的資料放進去。
		info.name = $(this).attr("address");
		info.longitude = $(this).attr("lng");
		info.latitude = $(this).attr("lat");
		
		$.cookie('info', JSON.stringify(info));//放進去之後,重新封裝
		location.href = "{pigcms{:U('User/add_adres')}&address_id="+info.id;
	});

這樣,頁面執行之後,Cookie中就有了上面的資料。

最後,jQuery清空Cookie,

$(".icon-arrow-left2").click(function(){
		$.cookie('info', 0); 
	});

最最後,PHP方法互動,
<pre name="code" class="php">/* 執行編輯 */
	public function edit_adres(){
		$id = $_POST['address_id'];
		$params['name']			= $_POST['name'];
		$params['sex']			= $_POST['sex'];
		$params['address']		= $_POST['address'];
		$params['detail']		= $_POST['detail'];
		$params['phone']		= $_POST['phone'];
		$params['uid']			= $this->_uid;
		$params['longitude']	= $_POST['longitude'];
		$params['latitude']		= $_POST['latitude'];
		$params['create_time']	= time();
		
		if( !$id ){
			if($returnId=D('表名')->data($params)->add()){
				if(IS_AJAX){
					setcookie('info');
					$this->ajaxReturn($returnId, '新增成功', 1);exit;
				}	
			} else {
				$this->error('新增失敗,請重試!');
			}
		} else {
			$where['address_id'] = $id;
			if(D('表名')->where($where)->data($params)->save()){
				if(IS_AJAX){
					setcookie('info');
					$this->ajaxReturn($id, '編輯成功', 1);exit;
				}
			} else {
				$this->error('編輯失敗,請重試!');
			}
		}
	}

最最最後,補充一下,

如果需要在頁面輸出已經寫好的cookie,需要先例項化一下,

detail = JSON.parse($.cookie('info'));
然後才能這樣使用,
detail.name