WedX - журнал о программировании и компьютерных науках

extjs с использованием jsonp, доступ к данным с удаленного URL-адреса

с extjs я запускаю сервер из одной системы, указываю URL-адрес в другой системе и использую JSONP в extjs ver: 4.02, когда я проверяю в ответ, я получаю данные в формате json, когда я пытаюсь распечатать в консоли или в магазине, я не получаю... вот мой код extjs...

<script type="text/javascript">

            Ext.Ajax.cors = true;
            Ext.Ajax.useDefaultXhrHeader = false;   

        Ext.define('User', {
            extend: 'Ext.data.Model',
            fields: ['empid', 'name', 'email']
        });

    var myStore = Ext.create('Ext.data.Store', {
                    model: 'User',                     
                    autoLoad:true,
                    proxy: {
                        type: 'jsonp',

                      // url : 'data/tagfamily.json',
                        url:'https://192.168.7.70:8080/palamanagement/user/getAllRecords',

                                            },
                    listeners:{
                        'load':function( store, records, successful, eOpts ){                                             
                            alert(records);
                            console.log(records);

                        }
                    }
                });

11.02.2014

  • Из-за характера вы должны предоставить функцию callback на втором домене. Внимательно прочитайте документ, пожалуйста. docs.sencha.com/extjs/4.2 .2/#!/api/Ext.data.proxy.JsonP 11.02.2014
  • Как выглядит ответ от вашего сервера? Его необходимо отформатировать как обратный вызов, который может выполнять прокси. См. документы (и пример ответа) для прокси-сервера JsonP здесь: docs.sencha.com/extjs/4.2.2/#!/api/Ext.data.proxy.JsonP 11.02.2014
  • @existdissolve спасибо за ответ :[{empid:1,возраст:12,отдел:sme,электронная почта:[email protected],имя:murugan,телефон:4565465441,должность:инженер-программист},{empid:2,возраст: 23, отдел: sme, электронная почта: [email protected], имя: Jessyfhgfh, телефон: 4423023222, должность: инженер-программист}] это мои выходные данные в ответ, как использовать функцию обратного вызова? 11.02.2014
  • @OğuzÇelikdemir спасибо за ответ, можете ли вы указать конкретную причину или пример, почему я должен использовать callBack().... 11.02.2014

Ответы:


1

Вы буквально должны вернуть что-то вроде следующего:

someCallback({
    users: [
        {
            id: 1,
            name: "Ed Spencer",
            email: "[email protected]"
        }
    ]
});

Итак, у вас уже есть JSON в том виде, в котором он вам нужен; вам просто нужен ответ вашего сервера, чтобы обернуть JSON в обратный вызов, чтобы прокси-сервер JSONP мог выполнить и загрузить ваше хранилище данными.

Поэтому при обработке запроса JSONP скрипт вашего сервера должен распознавать параметр «обратный вызов», который отправляется как часть запроса. Затем необходимо использовать значение этого параметра, чтобы обернуть ваш ответ JSON.

Обязательно прочитайте документы, которые опубликовали и я, и Огуз: они довольно хорошо излагают требования. Но если вы не ответите обратным вызовом, вы никогда не получите свой стандартный ответ JSON для работы с прокси-сервером JSONP.

11.02.2014

2

Когда вы отправляете запрос из ДОМЕНА-А в ДОМЕН-Б, вы должны предоставить функцию обратного вызова в определении прокси. Функция обратного вызова будет использоваться после завершения запроса.

Например, в сервисе Flickr REST есть параметр jsoncallback, которому мы должны дать имя нашей функции, чтобы выполнить наш запрос. Таким образом, наш URL-адрес запроса будет:

.../?jsoncallback=ourFunction

Чтобы иметь возможность указать имя нашей функции, в ExtJS есть свойство callbackKey. Вот так:

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['empid', 'name', 'email']
});

Ext.data.JsonP.request('https://api.flickr.com/services/feeds/photos_public.gne', {
    callbackKey: 'jsoncallback',
    callback: ourFunctionName
});

or

Ext.data.JsonP.request('https://api.flickr.com/services/feeds/photos_public.gne', {
    callbackKey: 'jsoncallback',
    callback: function(data) {
        ...
    }
});    

PS: Я знаю, что вы не найдете свойство callback в документе, но просто убедитесь, что оно есть. Проверьте файл ext-all-debug-w-comments.js, строка 108486.

Функция обратного вызова Flickr
JsonP callbackKey

11.02.2014
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]