हम शुद्ध ext.js से एक ऐसे मॉडल में माइग्रेट करने का प्रयास कर रहे हैं जो नियंत्रक में ext.js का उपयोग करता है, लेकिन फ्रंट एंड शुद्ध HTML, बूटस्ट्रैप है।

जैसे ही हम माइग्रेट करते हैं, मैं लॉगिन अनुरोध पर अजाक्स बनाने की कोशिश कर रहा हूं। मेरे पास एक अजाक्स कॉल है जो एक खाली 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');
    },

मैंने क्रोम पर डिबग किया और अनुरोध पेलोड मौजूद नहीं है।

not working html version

शुद्ध ext.js प्रोजेक्ट क्रोम पर डीबग पर निम्नलिखित लौटाता है।

working extjs version

जैसा कि आप देखते हैं, इसमें उपयोगकर्ता नाम और पासवर्ड के साथ अनुरोध पेलोड है। साथ ही failure: function (response) response.status=0 देता है। अनुरोध भेजने के शुद्ध जावास्क्रिप्ट तरीके से मुझे क्या याद आ रही है।

संपादित करें, 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 में उपयोगकर्ता नाम, पासवर्ड स्ट्रिंग है। यह अजाक्स विफल हो जाता है और failure खंड में प्रवेश करता है।

1
Siddharth 14 फरवरी 2019, 07:23

1 उत्तर

सबसे बढ़िया उत्तर

पहली स्क्रीन में विकल्प अनुरोध से पता चलता है कि एक CORS संबंधित समस्या। इस समस्या को CORS को सक्षम करके हल किया जा सकता है।

लेखक का समाधान (टिप्पणियों से): open -a Google\ Chrome --args --disable-web-security --user-data-dir="tmp/tmpChrome

1
scebotari66 14 फरवरी 2019, 15:46