Ошибка Сенчи XMLHttpRequest не может загрузить http://localhost. ... Исходное значение NULL не разрешено Access-Control-Allow-Origin - PullRequest
0 голосов
/ 27 июля 2011

У меня проблема с загрузкой магазина Sencha.Моя декларация магазина выглядит следующим образом:

Ext.regModel('Car',{

        idProperty: 'id', 
        fields: [
                 //'id', 'company', 'driver', 'carType','xCoordinate','yCoordinate'                  
                 {name: 'id', type: 'int'},
                 {name:'company', type:'string'} ,
                 {name:'driver', type:'string'},
                 {name:'carType', type:'string'},
                 {name:'xCoordinate', type:'int'},
                 {name:'yCoordinate', type:'int'}

                 ]                                   

    });

var strr= new Ext.regStore({

        id:'carStore',
        model:'Car',    //configuration option is the cars

        proxy: {
             type: 'ajax',
              url: 'http://localhost:8080/A/carStore.html&callback=?',
              reader: {
                type: 'json',
                root: 'carss'
              },
        },
        autoLoad: true
});

И я сохраняю хранилище в списке:

CarManagementSystem.views.carList = new Ext.List({
        id: 'carList',
        store: 'carStore',

        onItemDisclosure: function (record) {

            var selectedCar = record;
            CarManagementSystem.views.addNewCar.load(selectedCar);
            CarManagementSystem.views.viewport.setActiveItem('addNewCar', { type: 'slide', direction: 'left' });
        },
       itemTpl: '<div class="list-item-id">{id}</div>' +'<div class="list-item-driver">{driver}</div>'
    });

Однако, когда я пытаюсь загрузить список с моим файлом JSON,Я получаю эту ошибку:

XMLHttpRequest не может загрузить http://localhost:8080/A/carStore.html&callback=?&_dc=1311751412006&limit=25. Нулевой источник не разрешен Access-Control-Allow-Origin.sencha-touch-debug.js: 7212

Uncaught TypeError: Невозможно прочитать свойство 'length' с неопределенным значением

Я сохраняю свой файл JSON в формате html и хранится на сервере,Буду признателен за любую помощь.

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 августа 2013

Вы столкнулись с классической проблемой CORS.

  • Это безопасность браузера, называемая веб-безопасностью.Если вы находитесь в режиме разработки, вы можете запустить Chrome и отключить этот флаг.Но если вы запускаете свое приложение в рабочем режиме в браузере, вам нужно будет обойти это ограничение спецификации ajax.
  • Чтобы обойти его, вы можете использовать прокси (например, создание внутреннего сценария в том же доменезагрузить для вас ресурс) или вы можете использовать JSON-P.Для этого вам нужно изменить хранилище на тег сценария, НО ТАКЖЕ вам понадобится сервер, чтобы иметь возможность обнаруживать параметры обратного вызова и отправлять его вам как функцию JS, автоматически выполняемую при вставке в DOM.

Я добавлю, что у вас не будет этой проблемы при работе в PhoneGap, потому что PhoneGap не работает с веб-сервером, а обслуживает файлы с файлом: // protocol.

Если вы хотите узнать большеи я рекомендую, так как это обычное приложение для разработки мобильных веб-приложений, вы должны узнать, что такое JSON-P, что такое CORS и как он работает.

0 голосов
/ 16 апреля 2012

Вы должны изменить тип прокси с 'ajax' на 'type:' scripttag '

0 голосов
/ 27 июля 2011

Вы не можете набрать номер порта (8080) при выполнении запроса AJAX.Если вам в конечном итоге потребуется междоменный запрос, измените тип прокси на «scripttag».

...