[英]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
或类似的东西)。 如果你将一个函数分配给你引用globalVar
的url
属性(我不知道文件上传插件是否支持这个),那么你似乎期望的行为才会发生。
因此,即使您稍后更改globalVar
,文件上载小部件的url配置选项也将保持不变。 如果要更改它,则需要再次明确指定它。
如果您希望变量值从一个页面持久存储到另一个页面,则必须将该值存储在某个位置,然后从另一个页面检索它。 Javascript变量是页面的本地变量,因此每次进入新页面时都会清除整个javascript状态。 存储/检索变量的选项有:
如果您不需要将它存储在服务器上,前两个更简单。 服务器的优点是它甚至可以从其他计算机上获得。 Cookie和LocalStorage仅在该特定计算机上可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.