免責聲明 - 我已經檢查了現有的SO條目並拼湊了一些應該工作,但仍然沒有。變量範圍Dojo xhrPost
我有以下功能。在閱讀本後
getPicklist: function() {
var xhrArgs = {
url: 'myUrl',
postData: dojo.toJson({
'opportunityId': 'myOppId',
'loggedInUserId': 'myUserId' //App.context.user.$key
}),
headers: {
"Content-Type": "application/json"
}
}
var deferred = dojo.xhrPost(xhrArgs);
deferred.then(
function (data) {
var jsonResponse = dojo.fromJson(data);
picklistName = jsonResponse.PicklistName;
if (!picklistName) {
picklistName = "defaultPickListName";
}
return picklistName;
},
function (error) {
alert("Could not load picklist " + error);
});
;
//return picklistName; -- null
}
我的理解::基本上它發送一對值到一個web服務與回來在JSON結果 anonymous js function with xhrpost dojo not returning data
爲添加一個變量這個功能範圍之外,沿與使用dojo.deferred,將解決這個問題。我嘗試在函數之外放置一個var,並將該對象分配給picklistName變量。
但是,我仍然無法得到這個函數的結果(picklistName變量)。
有人能澄清我做錯了什麼,我該如何解決它?
編輯 - 做出更改後,托馬斯厄普頓建議,我更接近,但我得到一個奇怪的錯誤。
我getPicklist後增加以下功能:
returnPicklistName: function() {
this.getPicklist().then(function (picklistName) {
return picklistName;
})
},
因爲我真正想要的是領料單(有JSON,我想真的,但我只是解決了選擇列表現在)。
這會在Chrome開發工具中拋出以下錯誤 - Uncaught TypeError:Object [object Object] has no method'getPicklist'。
我還錯過了什麼?謝謝。
。 – tik27
也取決於你如何使用getPickList函數,延遲,因爲你使用它不會工作。因爲getPickList函數在延遲執行之前已經退出了很久。你是否遇到了ajax函數的問題,或者沒有獲得價值作爲回報 – tik27
@ tik27將價值作爲回報。我在JS框架(argos-sdk)的上下文中調用此方法,並嘗試動態命名文本框。根據它的文檔,這樣做的方式是通過類似this.getPicklist()。bindDelegate()。然而,函數本身總是返回一個空字符串,所以我想我有一些範圍問題。 – Tek