我正在使用the jQuery fileupload plugin并像这样配置它:
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
的值,然后执行文件上传(使用AJAX的jQuery文件上传插件,以便页面不会更改),则发出请求的URL将具有原始globalVar
值(页面首次加载时的值)。为什么会这样呢?
最佳答案
创建文件上传小部件时,您要向其传递一个配置对象。该对象具有许多属性,其中包括url
。
创建对象时(如果您在$(document).ready()
中创建文件上载小部件),将评估属性值。由于分配了值,因此该对象不知道globalVar
变量:
"ajax_handler.php?globalVar=" + globalVar
计算为一个简单的字符串(您没有向其传递对
globalVar
或类似名称的引用)。您似乎期望的行为只有在将函数分配给引用了url
的globalVar
属性时才会发生(我不知道文件上传插件是否支持此功能)。因此,即使您稍后更改
globalVar
,文件上传小部件的url配置选项也将保持不变。如果要更改它,则需要再次明确分配它。