私はこのJSファイルを持っています
function APIAccess(){
this.LoadScreen = function(){
var loadScreen = $('#loadScreen');
if(loadScreen.html() == undefined){
loadScreen = '<div id="loadScreen" style="display: none;width: 100%; height: 100%; top: 0pt;left: 0pt;">' +
'<div id="loadScr" style="filter: alpha(opacity = 65); z-index: 9999;border: medium none; margin: 0pt; padding: 0pt; width: 100%; height: 100%; top: 0pt;left: 0pt; background-color: rgb(0, 0, 0); opacity: 0.2; cursor: wait; position: fixed;"></div>' +
'<div id="loader" style="z-index: 10000; position: fixed; padding: 0px; margin: 0px;width: 30%; top: 40%; left: 35%; text-align: center;cursor: wait; ">' +
'<img src="img/ajax-loader.gif" alt="loading" /></div></div>';
$(document.body).append(loadScreen);
}
};
this.APICall = function(url, params, method, callback){
this.LoadScreen();
var postData = null;
if(params != null){
postData = JSON.stringify(params);
}
if(url.toLowerCase().indexOf("http") < 0){
url = "http://" + url;
}
$('#loadScreen').show(function(){
$.ajax({
url: url,
async: true,
type: method,
data: postData,
success: function(data){
$('#loadScreen').hide();
callback(data);
},
error:function(data){
alert("failure");
return false;
}
});
});
};
}
function Domain(reqCallback){
this.url = 'http://beta.test123.net/api/domain';
this.params = null;
this.method = 'GET';
this.callback = function(data){
setCookie("domain", data);
if(typeof reqCallback != null){
reqCallback(data);
}
};
this.request = this.APICall(this.url, this.params, this.method, this.callback);
}
Domain.prototype = new APIAccess;
function Login(usermail, pass, reqCallback){
var domainUrl = getCookie("domain");
if(domainUrl == null)
return false;
else
domainUrl += '/api/login';
this.url = domainUrl;
this.params = {"email": usermail, "password": password};
this.method = 'POST';
this.callback = function(data){
setCookie("login", data);
if(typeof reqCallback != null){
reqCallback(data);
}
};
this.request = this.APICall(this.url, this.params, this.method, this.callback);
}
Login.prototype = new APIAccess;
表示される場合は、メソッドthis.request = this.APICall(this.url, this.params, this.method, this.callback);
が毎回繰り返されます。APIAccess関数に配置できればいいのにと思います。できることを提案してください。
これをhtmlでこれとして使用します
$(document).ready(function(){
var domain = new Domain(function(data){
alert(data);
});
domain.request;
});