繁体   English   中英

函数中的全局变量值不会更新

[英]Global variable value in function doesn't update

我正在使用jQuery fileupload插件并将其配置如下:

jQuery(document).ready(function() {
  jQuery("#fileupload").fileupload({
    dataType: "json",
    url: "ajax_handler.php?globalVar=" + globalVar,
    send: function (e, data) {

    },
    done: function (e, data) {

    }
});

....

globalVar是(等待它)一个全局变量。

问题是,如果我更改globalVar的值然后执行文件上传(使用jQuery文件上传插件,这是AJAX,以便页面不会更改),请求的URL具有原始globalVar值(当页面首次加载时它有)。

为什么会这样?

创建文件上载窗口小部件时,您将向其传递配置对象。 该对象具有许多属性,其中包括url

在创建对象时评估属性值(在您$(document).ready()$(document).ready()创建文件上载小部件时)。 由于分配的值,对象不知道globalVar变量:

"ajax_handler.php?globalVar=" + globalVar

求值为一个简单的字符串(你没有传递给globalVar或类似的东西)。 如果你将一个函数分配给你引用globalVarurl属性(我不知道文件上传插件是否支持这个),那么你似乎期望的行为才会发生。

因此,即使您稍后更改globalVar ,文件上载小部件的url配置选项也将保持不变。 如果要更改它,则需要再次明确指定它。

如果您希望变量值从一个页面持久存储到另一个页面,则必须将该值存储在某个位置,然后从另一个页面检索它。 Javascript变量是页面的本地变量,因此每次进入新页面时都会清除整个javascript状态。 存储/检索变量的选项有:

  1. 存储它并从cookie中检索
  2. 存储它并从LocalStorage中检索它
  3. 存储它并在服务器上检索它(可能使用AJAX)

如果您不需要将它存储在服务器上,前两个更简单。 服务器的优点是它甚至可以从其他计算机上获得。 Cookie和LocalStorage仅在该特定计算机上可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM