繁体   English   中英

科尔多瓦ios xmlhttprequest似乎缓存响应

[英]cordova ios xmlhttprequest seems to cache response

我有一个cordova ios应用程序,该应用程序使用XMLHTTPRequest进行呼叫。 情况是,我第一次使用正确的用户名/密码登录,应用程序按预期工作。 在注销后执行一些操作时,我明确尝试使用错误的用户名/密码登录。 似乎它仍在登录。我什至警告了服务器的响应,它正在返回上一个响应。

我已经准备了与当前情况类似的其他线程,但是,我添加了以下几行:

“缓存控制:无缓存”“缓存控制:最大年龄= 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对象。 baseUrlhttp(s)://mydomain.tdlapiUrl用于版本化或分段API,如果不需要,请将其设置为/否则用作/myApiv1/

如果需要BaiscAuth ,请在ajaxSetup方法setupAjaxDefaults username: someuserpassword: plaintextpasswordajaxSetup对象。

应用程序触发deviceready事件后,请调用api.initialize();

然后要使用未缓存的请求:

api.ajaxGet('someEndpoint', { some: param, someother: data }, aSuccessCallbackFn, optionalFailureCallbackFn);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM