我将此函数编写为显示模块模式,但当我在get
的控制台中调用metadataModule.get();
方法时,它在控制台中回显undefined
。
var metadataModule = function () {
var metadataurl = 'http://farskids326.com/data.json';
function getMetadata() {
console.log("Metadata Function Called")
$.ajax({
url: metadataurl,
dataType: "json",
success: function (data) {
console.log(data);
}
});
}
return {
get: getMetadata,
};
}();
我在这段代码中哪里犯了错误?
答案 0 :(得分:0)
在控制台中工作时,在任何命令之后都会回显最后一次表达式的返回值。您使用的方法没有明确的返回值。因此,这可能就是您看到undefined
。
这可能意味着您的ajax调用遇到错误。尝试在成功或错误发生时将其更改为日志,如下所示:
$.ajax({
url: metadataurl ,
dataType: "json",
success: function(data){
console.log('called success!');
},
error: function(jqXHR, textStatus, errorThrown){
console.log('called error!');
}
});
然后,当您运行代码时,您应该确切地看到正在执行哪个回调。希望这能为您提供调试问题的良好起点。
答案 1 :(得分:0)
getMetadata函数返回任何内容,是的,它将输出undefined。为了响应JSON的内容,你需要使ajax调用同步并返回你得到的值。
var metadataModule = function () {
var metadataurl = 'http://farskids326.com/data.json';
function getMetadata() {
console.log("Metadata Function Called")
var content = {}
$.ajax({
url: metadataurl,
async : false,
dataType: "json",
success: function (data) {
content = data;
}
});
return content
}
return {
get: getMetadata,
};
}();