簡體   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