2013-08-30 84 views
0

我有這樣的劍道對象,我很擔心它的這部分配置:如何將從javascript函數返回的cookie值傳遞給JSON參數字段?

data: { 
      awardTitleId: e.data.AwardTitleId, 
      personId: X, //needs to be a variable 
      nameId: Y //needs to be a variable 
     } 

我得到PERSONID和填充NameID的值,並將其存儲到餅乾。

function createCookie(name, value, days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     var expires = "; expires=" + date.toGMTString(); 
    } 
    else expires = ""; 
    document.cookie = name + "=" + value + expires + "; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name, "", -1); 
} 

這裏的問題是,我從「readCookie」功能使用返回的值,它需要在一個變量,所以我可以做的:

data: { 
      awardTitleId: e.data.AwardTitleId, 
      personId: variable1, 
      nameId: variable2 
     } 

我做不到這個:

data: { 
      awardTitleId: e.data.AwardTitleId, 
      personId: readCookie("personId"), 
      nameId: readCookie("nameId") 
     } 

所以我的問題是,我如何使用這些Java腳本函數在我的代碼中返回的值?它們必須是「全局變量」,以便我可以在網頁的其他部分/事件中使用它。

我試着在我的頁面頂部聲明這些變量,所有函數之外,但我不斷得到0的ID。

cookie功能是工作,順便說一句。

編輯 -

函數返回一個值:

+0

爲什麼不在像'data.personId = readCookie(「personId」)' –

+0

這樣的一些初始化上設置這些?你可以更具體一點嗎?也許是一個例子? –

回答

1

它看起來像你使用jQuery所以如果你有一個現成的功能,你可以設置這些值到你的數據對象像這樣

var data: { 
     awardTitleId: e.data.AwardTitleId, //wherever you get this from 
     personId: null, 
     nameId: null 
    } 

$(function(){ 
    data.personId = readCookie("personId"); 
    data.nameId = readCookie("nameId"); 
}); 

我不確定你的數據對象究竟在哪裏生活,希望不在全球範圍內,但是喲你提前在全球範圍內提到這一點,這是我離開它的地方。

通過在頁面的ready函數中分配personIdnameId,您將擁有頁面的生命期,並且不需要從cookie中持續獲取它們。

+0

好的我可以通過在所有函數之外聲明var數據來得到這個工作。現在唯一的問題是cookie值繼續使用以前的值(而不是當前設置的值)。我認爲eraseCookie函數會照顧它? –

+0

因此,您正在擦除Cookie,設置值,然後嘗試從值中讀取數據,但沒有獲取您設置的值? –

+0

是。擦除,設置,我從前面的運行得到的值 –

相關問題