【发布时间】:2018-07-20 22:11:28
【问题描述】:
我看了又看,但我仍在摸不着头脑。如果我遗漏了一些明显的东西,我道歉。我试图创建一个我自己编写的自定义函数库(感谢 stackoverflow 帮助我解决了这个问题......)。然后我有一个在调用网页时加载的 javascript 文件,该文件又调用我的自定义库中的上述函数。
我有一个名为getConfig() 的函数,它的作用显而易见。它获取一个 JSON 文件,其中包含我的服务器的配置详细信息,该服务器托管我的所有 RESTful Web 服务。当我单步执行代码时,配置详细信息按预期返回,但是,当我全速加载网页时,配置对象返回为undefined。我认为这可能是时间问题,所以我将所有内容都包装在 $(document).ready(function()) 块中,但不行。我什至尝试了window.onload = function(){} 块以确保在调用自定义库之前加载所有内容。没有运气!它让我头脑清醒,因为我一生都无法弄清楚发生了什么。
我的自定义库文件看起来像这样,文件名xtendLibs.js
var xtendLibs = {
getConfig : function(){
var CONFIG;
$.getJSON("/js/config.json", function(json){
CONFIG = json;
});
return CONFIG;
},
getObjects : function(config, medicareno, medicarelineno, objectType){
var object;
var urlString = config.scheme + config.muleHost + config.mulePort + ":/patients/";
switch(objectType){
case ("details") :
urlString = urlString + "details/" + medicareno + "/" + medicarelineno ;
break;
case ("appointments") :
urlString = urlString + "appointments/" + medicareno +"/" + medicarelineno;
break;
}
$.ajax({
type : 'GET',
url : urlString,
success : function(data){
object = data;
},
failure : function(){
alert("Failure");
}
});
return object;
},
getUrlParameters : function(){
var paramsArray = window.location.search.substring(1).split("&");
var obj = [];
var tempArray;
var paramName,paramValue;
for(var i = 0; i < paramsArray.length; i++){
tempArray = paramsArray[i].split("=");
paramName = tempArray[0];
paramValue = tempArray[1];
obj[paramName] = paramValue;
}
return obj;
}
};
上面文件中调用各个函数的javascript文件长这样appts.js
window.onload = function(){
var config, params, appointments;
params = xtendLibs.getUrlParameters(); // This line works - and params is returned
config = xtendLibs.getConfig(); // This line fails but will work if I step through the code
appointments = xtendLibs.getObjects( config,
params["medicareno"],
params["medicarelineno"],
"appointments");
console.log(params);
}
我真的很难过。任何帮助将不胜感激。
【问题讨论】:
-
任何 console.log 错误?
-
在您的 HTML 中,您提到这些
js文件的顺序是什么? -
这似乎是您对异步调用如何工作的理解的问题。问题是您试图在加载之前返回配置。因此,代码在您单步执行时有效,但在您正常运行时无效。例如,看看这个答案stackoverflow.com/a/133327/242311。
-
感谢大家的回答。这是真的,我正在努力处理 Javascript 的异步组件。它对我来说很陌生。我参加了许多关于 Udemy 的课程,但没有讨论异步组件。这里有几个很好的链接,我会阅读。我很抱歉问这样一个新手问题。干杯!!
标签: javascript jquery postgresql pg-jdbc