頁面間固定參數,通過cookie傳值


最后在做的頁面,比如用戶數據(用戶頭像,名稱,年齡)這些信息,因為大部分頁面都要用,之前是通過url地址傳,另一頁面接收。考慮到這樣做會讓url過長,因此,嘗試使用cookie,把固定的值保存在cookie,其它頁面拿出來就可以使用。

  • 在此之前,先寫通過url傳值與取值的過程。url通過跳轉頁面,給跳轉頁的url問號后拼接參數的方法傳值:
//問號后的userId  /  dialogId都是要傳的參數
//如果有多個參數,就用“&”拼接
window.location.href = 'doctor_ask.html?userId=' + userId + "&dialogId=" + dialogId;

在doctor_ask.html頁面,把在url中的參數取下來,要使用一個方法getQueryString(),其中有一個方法是用來獲取url中含有中文參數的:

/* 獲取url后的某一個query的值 */
function getQueryString( name ) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg); //獲取url中"?"符后的字符串並正則匹配
    var context = "";
    if (r != null)
    context = r[2];
    reg = null;
    r = null;
    return context == null || context == "" || context == "undefined" ? "" : context;
}

//獲取Url中中文參數的方法
function getQueryUrlString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if(r != null) {
        return decodeURI(r[2]);
    }
    return "請選擇";
}

使用方法獲取參數:

//調用方法獲取參數,方法中的參數名是一個字符串
var userId = getQueryString('userId')

 

  • 第二種,通過cookie方法傳值,我這里使用的是jQuery cookie,因此需要先加載jQuery與cookie:
<!--使用cookie-->
<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script>
<script src="http://code.changer.hk/jquery/plugins/jquery.cookie.js"></script>

在其中一個頁面,比如首頁,將要保存的值存放在cookie.

如果僅是一個id,直接使用鍵值對的方法保存即可:

//將id保存在cookie
$.cookie('doctorId', '11916111-f2eb-11e4-b756-f40669963d49');
//從cookie中取出id
var doctorId = $.cookie('doctorId');

如果是多個值,需要將多個值放在對象中,保存這個對象:

//將多個值存放在對象中
var userData = {
   userId: "11916122-f2eb-11e4-b756-f40669963d49",
   patientName: "張麗",
   patientAge: 23,
   patientSex: "F"
}
//將這個對象保存在cookie,它的鍵是對象名稱,值為JSON.stirng(),目的是將這個對象解析為字符串,因為cookie的鍵與值都是字符串
$.cookie('userData' , JSON.stringify(userData));

如果在其它頁面使用這個cookie中對象,可以取出這個對象並將對象轉換為字符串

var userData = $.cookie('userData');
if(userData){
//JSON.parse()  將字符串解析為對象,方便使用
   userData =  JSON.parse(userData);    
};

兩個知識點:

//字符串解析為對象
JSON.parse(對象名稱);
//對象解析為字符串
JSON.stringify(對象名稱);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM