Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2018, 19:11
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Проблема при изменение типа в Store на ajax
Всем привет.
Ребят, у меня проблема заключается при изменении типа в Store на ajax.
Store в моем приложение выглядел так:
var urlRoot = 'data?model=Operation&method=';
Ext.define('BookApp.store.BookStore', {
    extend: 'Ext.data.Store',
    model: 'BookApp.model.Book',
    autoLoad: true,
    storeId: 'BookStore',
    proxy: {
            type: 'jsonp',
            noCache: false,
            api: {
                create:     urlRoot + 'Create',
                read:       urlRoot + 'Read',
                update:     urlRoot + 'Update',
                destroy:    urlRoot + 'Destroy'
            },
            reader: {
                type: 'json',
                metaProperty: 'meta',
                rootProperty: 'data',
                idProperty: 'id',
                totalProperty: 'meta.total',
                successProperty: 'meta.success'
            },
            writer: {
                type: 'json',
                encode: true,
                writeAllFields: true,
                rootProperty: 'data',
                allowSingle: false

            }
        }
});

Когда меняю в store тип на ajax
....
proxy: {
            type: 'ajax ',
             .....


то при загрузки приложения получаю ошибку 500 (Internal Server Error)
Я знаю что тип jsonp необходим для загрузки данных с другого домена, на котором работает мое приложение, но у меня все приложение и база данных в том числе, находится на одной локальной машине поэтому устанавливаю тип ajax. Но с этим типом возникает проблема.

На стороне backend ответ делаю так.
Код:
...
# Form the answer
dict_out= {"data" : list, "meta": { "success": "true", "msg": "", "total": str(count) }}
# Translate it into the format Json
jsonFormat = json.dumps(dict_out)
# Add to the answer callback
read_out = dict['callback'] +'(' + jsonFormat + ')'
return HttpResponse(read_out)
....
Ошибка в браузере
https://drive.google.com/file/d/1rjQ...ew?usp=sharing

Сообщите, пожалуйста, из за чего может возникать такая проблема?

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 06.09.2018, 09:27
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Проблема сугубо в вашем серверном коде. Ошибка 500 - никаких претензий к фронтэнду.
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2018, 23:59
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 68

Infarch спасибо, я уже разобрался в проблеме.
В ответе сервера я увидел следующее:
MultiValueDictKeyError at /data "'callback'"
и я заметил что у меня не правильно формируется ответ для приложения:
read_out = dict['callback'] +'(' + jsonFormat + ')'
После того как я исправил ответ на:
read_out = '(' + jsonFormat + ')'
ошибка ушла.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение стиля всех одинаковых классов при наведение(клике) dmitriy39reg jQuery 10 03.02.2015 14:27
Выделение активного пункта меню при ajax запросе faecker AJAX и COMET 6 04.09.2014 19:14
background resize IceDvl jQuery 4 25.04.2014 17:54
Не выводится результат MySQL (при использовании AJAX) iBars AJAX и COMET 1 17.12.2012 09:13
Кодировка при использовании Ajax Nichloas AJAX и COMET 9 17.09.2009 16:06