Установить заголовки запросов для прокси Ext.data.Store в SenchaTouch - PullRequest
1 голос
/ 15 марта 2011

У меня есть хранилище данных, которое получает информацию из API JSON на моем сервере. Когда я запускаю код в WebKit / Chrome, кажется, что все работает нормально, но если я изменяю свой пользовательский агент на iPhone 4.1 и т. Д., Кажется, что запросы JSON не устанавливаются должным образом. Вместо того, чтобы отправлять запрос на получение JSON, он просто отправляет запрос и вместо этого получает страницу с отображением HTML.

Это магазин, который я определил:

Product.ProductStore = new Ext.data.Store({
    model: 'Product',
    proxy: {
        type: 'ajax',
        url: '/admin/products.json',
        reader: {
            type: 'json',
            root: 'products'
        }
    },
    autoLoad: true,
    storeId: 'productStore',
    getGroupString: function(record){
        return record.get('vendor')[0];
    }
});

Так что я действительно хочу, чтобы этот магазин сделал, это отправил запрос в /admin/products.json, который работает, как и ожидалось, на рабочем столе. Но когда я запускаю это в моем симуляторе или даже на устройстве, кажется, что он просто отправляет запрос в / admin / products, который вместо этого возвращает HTML.

Некоторые люди считают, что это проблема с сервером rails, и мне нужно установить тип контента для моего запроса. Проблема в том, как мне это сделать?

Я пробовал следующее, и оно тоже не работает:

Product.ProductStore = new Ext.data.Store({
    model: 'Product',
    proxy: {
        type: 'ajax',
        url: '/admin/products.json',
            // Trying to set the headers for the request -- not working
        headers: {
            'Content-Type': 'application/json'
        },
        reader: {
            type: 'json',
            root: 'products'
        }
    },
    autoLoad: true,
    storeId: 'productStore',
    getGroupString: function(record){
        return record.get('vendor')[0];
    }
});

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

1 Ответ

3 голосов
/ 15 марта 2011

должно быть

'Accept' : 'application/json'

Accept - это заголовок, который клиент использует, чтобы сообщить серверу, какой тип носителя он предпочитает. Content-Type - это заголовок, который сервер отправляет как часть ответа, сообщающего клиенту, что это за данные.

...