我正在使用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或类似名称的引用)。您似乎期望的行为只有在将函数分配给引用了urlglobalVar属性时才会发生(我不知道文件上传插件是否支持此功能)。

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

08-19 07:52