Почему мой requestPayload пуст в моем ajax-запросе - PullRequest
0 голосов
/ 14 февраля 2019

Мы пытаемся перейти с чистого ext.js на модель, которая использует ext.js в контроллере, но внешний интерфейс - чистый HTML, начальная загрузка.

Когда мы мигрируем, я пытаюсь создать ajax для запроса входа в систему.У меня есть вызов ajax, который возвращает пустой requestPayload.

loginSubmit : function(param){
        var me = this,
        params = {
            url: 'login/login',
            method: "POST",
            jsonData: Ext.JSON.encode(param.formValues) ,
            success: function (response) {
                var data = Ext.JSON.decode(response.responseText);
                Insights.view.common.util.StorageUtil.setAppData(response.responseText);

                me.getView().destroy();

                Ext.create({
                    xtype: 'mainviewport'
                });
            },
            failure: function (response) {
                var errorMessage = "Network connect timeout error"
                if (response.status == 401 || response.status == 500) {
                    var data = Ext.JSON.decode(response.responseText);
                    errorMessage = data.message;
                }

                if(param.loginButton){
                    var errMsg = form.queryById('login-error-msg');
                    errMsg.setText(errorMessage);
                    errMsg.setVisible(true);
                    param.loginButton && params.loginButton.enable();
                }

            }
        };
        Insights.view.common.util.RequestUtil.request(params, 'false');
    },

Я выполнил отладку в Chrome, и requestPayload не существует.

not working html version

Возвращается чистый проект ext.jsследующее при отладке в Chrome.

working extjs version

Как вы заметили, здесь есть requestPayload с именем пользователя и паролем.Также failure: function (response) возвращает response.status = 0 .Чего мне не хватает в чистом способе отправки запроса на языке javascript.

РЕДАКТИРОВАТЬ, добавить код RequestUtil

Ext.define('Insights.view.common.util.RequestUtil', {
    singleton: true,

    config: {
        baseUrl: ''
    },

    request: function (params, component) {
        var me = this,
            headers = {
                'ACCEPT': 'application/json'
            };


        var appData = Insights.view.common.util.StorageUtil.getAppData();
        if (appData) {
            headers.authToken = appData.token;
        } else if (params.authToken) {
            headers.authToken = params.authToken;
        }

        if(params.headers) {
            Ext.Object.merge(headers, params.headers)
        }

        this.loadMask(component);
        Ext.Ajax.request({
            url: this.getBaseUrl() + params.url,
            timeout: 60000,
            headers: headers,
            disableCaching: false,
            method: params.method,
            jsonData: params.jsonData,
            params: params.extraParams,
            binary: !params.binary ? false : params.binary,
            success: function (response, opts) {
                if (params.success) {
                    params.success(response, opts);
                    me.unLoadMask(component);
                }
            },
            failure: function (response, opts) {
                if (params.failure) {
                    params.failure(response, opts);
                }

                if (!Ext.isString(component)) {
                    me.unLoadMask(component);
                    if (params.url == "authenticate" || params.url == "userInfo") {
                        return;
                    }
                    var responseText = response.responseText && Ext.JSON.decode(response.responseText);
                    if (responseText && responseText.status === 'Failure') {
                        Ext.Msg.alert(i18nLabels.warning, responseText.message);
                    } else if (response.status == 401) {
                        me.handleSessionTimeout();
                    } else if (response.status == 404 || response.status == 500) {
                        me.errorHandler(responseText.message);
                    } else if (response.status == 405) {
                    } else {
                        me.errorHandler(i18nLabels.serverNotAvailable);
                    }
                }

            }
        });
    },

Я отлажен и проверен, jsonData имеет имя пользователя, строка пароля.Этот ajax терпит неудачу и входит в сегмент failure.

1 Ответ

0 голосов
/ 14 февраля 2019

Запрос OPTIONS на первом экране указывает на наличие проблемы, связанной с CORS .Эту проблему можно решить с помощью , включив CORS .

Авторское решение (из комментариев): open -a Google\ Chrome --args --disable-web-security --user-data-dir="tmp/tmpChrome

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...