嗨,我有一段代码运行了好几次
Loader.load('data/map.json')
我的想法是我可以传入任何 json 文件,加载器会处理它
所以这是异步错误格式的加载器
var Loader = {
basePath: '',
cache: {},
load: function(name) {
if(typeof this.cache[name] == 'undefined') {
var loadUrl = (this.basePath == '') ? name : this.basePath + '/' + name;
var parameters = {
url: loadUrl,
dataType: 'json',
async: false,
context: this,
success: function(data) {
this.cache[name] = data;
}
};
$.ajax(parameters);
}
return this.cache[name];
}
};
return Loader;
但这是异步错误格式,我需要将其设置为异步真实格式,以便更好地与 jQuerymobile 一起使用,所以在这里有一些帮助,我设法让它达到异步的程度
var data = AsyncLoader.load('data/map.json').done(function(data, textStatus, jqXHR) {
console.log("complete");
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log("an error has occurred");
}).always(function(jqXHR, textStatus) {
console.log("running");
});
这调用了 asynloader
function($) {
var AsyncLoader = {
basePath: '',
cache: {},
load: function(name) {
if(typeof this.cache[name] == 'undefined') {
var loadUrl = (this.basePath == '') ? name : this.basePath + '/' + name;
var parameters = {
beforeSend: function() { $.mobile.showPageLoadingMsg(); },
complete: function() {$.mobile.hidePageLoadingMsg(); },
url: loadUrl,
dataType: 'json',
async: true,
context: this,
success: function(data) {
this.cache[name] = data;
}
};
$.ajax(parameters);
}
return this.cache[name];
}
};
return AsyncLoader;
问题是要使这项工作我需要返回 $.ajax(parameters) 而不是返回 this.cache[name]; 否则我会收到一个javascript错误..问题是如果我在第二次加载maps.json时将其更改为获取$.ajax(parameters),它不会从this.cache获取数据,它将加载json文件再次没有用
谁能帮忙
谢谢 :)