【发布时间】:2016-12-21 12:02:29
【问题描述】:
我正在尝试从后端获取一些 url 并在 window.__env.{variable} 中分配 data.Results,以便我可以在应用程序的任何地方使用它。
我有这个代码
(function(window){
window.__env = window.__env || {};
$.ajax({
url: './assets/js/config/config.json',
method: 'GET',
success: function (data) {
let baseUrl = data.BaseApiUrl;
workflowDefinition(baseUrl);
}
})
function workflowDefinition(baseUrl) {
$.ajax({
url: baseUrl + 'api/Management/Configurations?name=SaveWorkflowDefinition&name=WorkflowDefinition',
method: 'GET',
success: function (data) {
if (data && data.Results && data.Results[0] && data.Results[0].Value) {
window.__env.saveWorkflowDefinition = data.Results[0].Value;
console.log(window.__env.saveWorkflowDefinition);
}
if (data && data.Results && data.Results[1].Value) {
window.__env.getWorkflowDefinition = data.Results[1].Value;
}
},
error: function (error) {
var errorMessage = "Failed to contact Workflow Server, please contact your IT administrator";
alert(errorMessage);
}
})
}
}(this))
我可以看到 console.log 在加载时正在打印它给了我正确的 URL,然后我尝试通过 window.__env.saveWorkflowDefinition 说另一个文件 xfunction.js 我想在其中使用 window.__env 但它给了我@ 987654327@.
但是,如果我像这样在没有 ajax 调用的情况下传递它,它就可以正常工作。
(function(window){
window.__env = window.__env || {};
window.__env.saveWorkflowDefinition= 'www.mybaseurl.com/api/Management/';
})
在进行 ajax 调用时,当我将它传递给 xfunction.js 时,有人能指出为什么它返回 undefined 吗?
【问题讨论】:
-
通过
window.__env.saveWorkflowDefinition说xfunction.js它给了我未定义。 我没明白,xfunction.js到底是什么? -
它是我要使用的另一个文件
window.__env., -
我怀疑,您试图在数据定义之前访问数据。由于您是异步分配数据的,因此没有预定义的时间会发生这种情况。
-
您确定在 Ajax 完成后尝试访问
window.__env.saveWorkflowDefinition吗?我不是在问您是否在调用函数workflowDefinition之后访问window.__env.saveWorkflowDefinition,而是在异步ajax 完成加载之后。你如何确定这一点? -
我建议你在
xfunction.js中使用这个ajax 脚本,这样你就可以使用promise/deferred 对象来监控ajax 请求的完成情况,这很容易做到
标签: javascript jquery ajax