![](/img/trans.png)
[英]setting an application controller variable to results returned from AJAX call
[英]Setting a variable from ajax call
讓我們說清楚。 這就是我想要做的:我有一堆從服務器獲取的用戶數據。 我想緩存數據,以避免每次需要電子郵件或用戶名時都向服務器發出請求。
因此,我將構建諸如getEmail,getUsername之類的函數,這些函數使Ajax調用一次並將其保存在一個對象中。 如果再次調用該函數,它將返回緩存的對象。
該應用程序分為模塊。 應用包含數據。 這是小提琴: http : //jsfiddle.net/Osoascam/Nk6aw/
(打開控制台以查看結果)
當然要做這樣的事情:
var email = Module.Utilities.getEmail();
這是錯誤的,因為getEmail將調用Ajax函數,因此即使調用完成后,電子郵件也將保持未定義狀態。 (我把它放在小提琴中以顯示我要實現的目標)。 但是,我無法在getEmail()函數或調用Ajax的函數中設置變量,因為幾個腳本必須能夠調用該函數並相應地設置其變量。
最好的方法是什么? 使通過Ajax調用返回對象的一部分的函數以僅進行一次調用的方式進行...
提前致謝,
奧斯卡
默認情況下,Ajax請求是異步的。 因此, getEmail()
應該接受一個回調參數...
Module.Utilities.getEmail = function(next) {
$.get('/api/getEmail/', function(res) {
next(res);
});
};
// when calling the function
Module.Utilities.getEmail(function(email) {
console.log(email);
});
也就是說,您也可以研究同步ajax請求 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.