Хобрук: Ваш путь к мастерству в программировании

Как отправить междоменный запрос для загрузки сетки Ext JS 4.1

Как загрузить данные в сетку, отправив междоменный запрос на ws с помощью AJAX? Я могу отправить запрос, но как я могу загрузить данные в сетку, используя метод обратного вызова?

Внутри файла контроллера:

if(searchText){
    var resultGrid = Ext.getCmp('myResultGrid');
    store.setProxy({
                            type: 'ajax',
                            // cross domain request
                            url:"http://3.xxx.xxx.77/cs/sid/"+searchText,
                            actionMethods:{read:'GET'},
                            pageParam: false, //to remove param "page"
                            startParam: false, //to remove param "start"
                            limitParam: false,
                            timeout:9000000,
                            noCache : true,
                            reader: {
                            type: 'json'
                            }
                    });


    resultGrid.store.load({
      scope: this,
      callback: function(records, operation, success) 
      {
          var totalcount= 0;
          totalcount = records.count(true);

          if(totalcount > 0)
          {
              // Load the data into grid ???

          }
          else
          {
              Ext.Msg.alert("No Records found.");   
          }
      }
    });
}

Файл магазина: SearchResultsStore.js

     Ext.define('AM.store.SearchResultsStore', {
    extend: 'Ext.data.Store',
    model: 'AM.model.SearchModel',
    autoLoad: false
});

Модель:

   Ext.define('AM.model.SearchModel', {
    extend: 'Ext.data.Model',
    fields: ['slno', 'customer']
});

json-ответ

        [{"slno": "12454","customer": "acd"}]

Помогите пожалуйста застрял!!! заранее спасибо

19.08.2012

  • Вы ничего не усложняете? Если в сетке установлена ​​конфигурация store: для вашего магазина, после загрузки магазина сетка автоматически отразит изменения. 19.08.2012
  • согласен, просто взгляните на несколько простых примеров сетки из официальной документации. 20.08.2012

Ответы:


1

Вы не можете использовать ajax для отправки запросов через домены, что является настоящей проблемой здесь. Вы предполагаете, что вам нужно что-то сделать в обратном вызове загрузки, потому что вы не получаете данные обратно, в первую очередь, это не имеет ничего общего с вашей проблемой, и вам не нужно использовать обратный вызов. Что вам нужно сделать, так это настроить свой магазин с прокси-сервером jsonp вместо ajax, который позволит вам выполнять междоменные вызовы:

store.setProxy({
                                type: 'jsonp',
                                // cross domain request
                                url:"http://3.xxx.xxx.77/cs/sid/"+searchText,
                                actionMethods:{read:'GET'},
                                pageParam: false, //to remove param "page"
                                startParam: false, //to remove param "start"
                                limitParam: false,
                                timeout:9000000,
                                noCache : true,
                                reader: {
                                type: 'json'
                                }
                        });
20.08.2012
  • Поэтому нет необходимости определять метод обратного вызова... это будет правильно обработано JSONP. Нужно ли что-то делать на стороне сервера, то есть в ответе json. Я пробовал это, но не смог загрузить данные JSON в сетку. 21.08.2012
  • Я не очень разбираюсь в jsonp, поэтому мой пример может быть не совсем точным, вам, вероятно, нужно определить метод обратного вызова. См. вопрос этого парня для примера из реальной жизни, с которым я помог ему разобраться: "jsonp scripttag extjs4 1 выпуск"> stackoverflow.com/questions/12021947/ 21.08.2012
  • После перехода на jsonp запрос выполняется как запрос GET [ранее он был преобразован в OPTIONS] с именем функции обратного вызова. И его вызов метода обратного вызова. Никаких изменений в ответ json не внесено. Я использую тот же json, но его загрузка... загрузка... загрузка... Итак, как я могу захватить данные и установить их в хранилище. Запрос отправлен: 10.xxx.xxx.14/ab/resources/scripts/ab/data/bomsearchresults.json?_dc=1345576045890&callback=Ext.data.JsonP.callback1 и вот метод обратного вызова: 21.08.2012
  • resultGrid.store.load({scope: this, callback: function(records, operation, Success) {// Здесь мне нужно установить предупреждение данных (операция+ +успех);}}); 21.08.2012
  • возвращенный json выглядит примерно так: 21.08.2012
  • Ext.data.JsonP.callback1([{slno: 12454,клиент: acd}]); 21.08.2012
  • Реймиус спасибо за помощь. Это сработало. Итак, что я сделал, я использовал JSONP и не использовал метод обратного вызова, поскольку JSNOP позаботится об этом. Таким образом, ответ json должен добавлять Ext.data.JsonP.callback2([{slno: 12454,customer: acd}]); и тип содержимого должен быть установлен как text/javascript. 22.08.2012
  • Новые материалы

    Управление DOM для чайников вроде меня
    Одной из первых вещей, которую мы рассмотрели, когда начали изучать Javascript во Flatiron, была модель DOM. Кто он? Чем он занимается? Он больше машина, чем человек? Ну да довольно много. ДОМ..

    Что такое структура данных?
    Структура данных хранит и извлекает данные. Все, что обеспечивает эти две функции, является структурой данных . Период. Вы можете пропустить оставшуюся часть статьи, если ответ..

    мои январские чтения по программированию
    Эрик Эллиот Программирование приложения JavaScript Эл Свейгарт «Автоматизируйте скучные вещи с помощью Python» Прогрессивное веб-приложение Google..

    Создание ассоциаций секвелизации с помощью инструмента командной строки Sequelize
    Sequelize - популярный, простой в использовании инструмент объектно-реляционного сопоставления (ORM) JavaScript, который работает с базами данных SQL. Довольно просто начать новый проект с..

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

    Введение в машинное обучение для обнаружения аномалий (часть 1)
    Тщательно созданный, тщательно спроектированный ресурс для специалистов по данным. Часть 1 Главы 03 из Руководства по машинному обучению для обнаружения аномалий Внимание! Прежде чем вы..

    Начало работы с Pulumi в Digital Ocean
    Цифровой океан (ДО) — отличная альтернатива многим другим поставщикам облачных услуг. DO предоставляет простой и понятный пользовательский интерфейс, упрощающий управление инфраструктурой и..