私は phonegap を使用して Android のアプリケーションに取り組んでいます。だから私のアプリのほとんどすべて。JavaScriptで行われます。以下に説明する問題に遭遇しました。誰かがこれを修正する方法を教えてくれれば、私は大いに感謝します. だから:助けてください!
アプリケーションをクリックすると、ajax リクエストでタイムアウトが発生します。タイムアウトが生成されると、他のすべてのリクエストもタイムアウトになります。これをブラウザで実行すると、この問題は発生しません。すべての呼び出しは非同期です。ときどき: ページの構築中に複数のリクエストが並行して実行されます。
私のコード:
if (typeof TheApplication.webServiceCall !== 'function'){
TheApplication.webServiceCall = function(uri, theType, async, data, callback, callbackError){
var result;
var successCallback = function (r) {
TheApplication.user.name = r.username;
$.ajax({
url: baseUrl + uri,
type: theType,
async: async,
data: data,
dataType: 'json',
timeout: 7000,
cache: false,
contentType: "application/json; charset=utf-8",
beforeSend: function(xhr,settings) {
var authToken = r.authtoken;
xhr.setRequestHeader('Authorization','Basic '+authToken);
xhr.setRequestHeader('max-age',0);
xhr.setRequestHeader('Expires','already expired');
},
success: function(data, textStatus, jqXHR) {
if (data.Error.length > 0){
console.log("log TheApplication.webServiceCall error "+JSON.stringify(data.Error));
TheApplication.Error.Throw(data.Error);
}
result = callback(data);
},
error: function(xhr, options, error){
var errorMessage = JSON.stringify(error);
if (typeof callbackError === 'undefined' || callbackError == false) {
TheApplication.Error.Throw('UNKNOWN');
}
if(errorMessage == "" || (errorMessage.indexOf("timeout"))>0){
TheApplication.Error.Throw('NO_CONNECTION');
}
}
});
};
var failureCallback = function (e) {
TheApplication.Error.Throw('UNKNOWN');
};
window.plugins.accountManager.getAccount(successCallback, failureCallback);
};
}