我有一个使用XMLHTTPRequest打电话的cordova ios应用程序。情况是,我第一次使用正确的用户名/密码登录,应用程序按预期工作。注销后会执行一些操作,我明确尝试使用错误的用户名/密码登录。似乎它仍在登录我。我甚至已经通知了服务器的响应,它正在返回之前的响应。
我已经准备好了与我目前情况相似的其他线程,但是,我已添加了这样的内容:
"缓存控制:无缓存" "缓存控制:max-age = 0" " pragma:no-cache"
但都没有效果。任何信息都会有帮助。感谢。
答案 0 :(得分:0)
这是一个多次使用的解决方案,虽然它依赖于jQuery:
var api = {
connection: {
baseUrl: '',
apiUrl: ''
},
initialize: function() {
api.setupAjaxDefaults();
},
setupAjaxDefaults: function() {
var headers = {
'Accept': "application/json; encoding='utf-8'",
'Content-Type': "application/json; encoding='utf-8'"
};
$.ajaxSetup({
headers: headers,
dataType: 'json',
crossDomain: true
});
},
ajaxPost: function(methodName, data, successCallback, errorCallback) {
$.ajax({
url: api.connection.baseUrl + api.connection.apiUrl + methodName,
data: data,
type: 'POST',
success: function(result, status, xhr) {
if ($.isFunction(successCallback)) {
successCallback(result);
}
},
error: function(jqXHR, textStatus, errorThrown) {
if ($.isFunction(errorCallback)) {
errorCallback();
}
else {
api.defaultErrorCallback(textStatus);
}
}
});
},
ajaxGet: function(methodName, data, successCallback, errorCallback) {
$.ajax({
url: api.connection.baseUrl + api.connection.apiUrl + methodName,
data: data,
cache: false,
type: 'GET',
success: function(result, status, xhr) {
if ($.isFunction(successCallback)) {
successCallback(result);
}
},
error: function(jqXHR, textStatus, errorThrown) {
if ($.isFunction(errorCallback)) {
errorCallback();
}
else {
api.defaultErrorCallback(textStatus);
}
}
});
},
ajaxGetCached: function(methodName, data, successCallback, errorCallback) {
$.ajax({
url: api.connection.baseUrl + api.connection.apiUrl + methodName,
data: data,
type: 'GET',
success: function(result, status, xhr) {
if ($.isFunction(successCallback)) {
successCallback(result);
}
},
error: function(jqXHR, textStatus, errorThrown) {
if ($.isFunction(errorCallback)) {
errorCallback();
}
else {
api.defaultErrorCallback(textStatus);
}
}
});
},
defaultErrorCallback: function(errorMsg) {
//alert('an api error occurred: ' + errorMsg);
}
};
首先填写connection
对象。 baseUrl
为http(s)://mydomain.tdl
,apiUrl
用于对API进行版本控制或细分,如果不需要,请将其设置为/
,否则将其用作/myApiv1/
。
如果您需要BaiscAuth
将} username: someuser
和password: plaintextpassword
添加到方法ajaxSetup
中的setupAjaxDefaults
对象。
您的应用程序触发deviceready
事件调用api.initialize();
然后使用:
进行未缓存的请求api.ajaxGet('someEndpoint', { some: param, someother: data }, aSuccessCallbackFn, optionalFailureCallbackFn);