0

我有这个剑道对象,我关心它的这部分配置:

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

我获取 personId 和 nameId 的值并将它们存储到 cookie 中。

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 功能正在工作,顺便说一句。

编辑 -

该函数返回一个值:

4

1 回答 1

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");
});

我不确定您的数据对象到底在哪里,希望不在全球范围内,但您提到需要在全球范围内更早,所以这就是我离开它的地方。

通过在页面的就绪功能中分配personIdand nameId,您将在页面的整个生命周期中拥有它们,并且不需要不断地从 cookie 中获取它们。

于 2013-08-30T18:54:09.867 回答