Данные Ajax все еще не загружаются в хранилище данных - PullRequest
0 голосов
/ 05 сентября 2011

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

Важное примечание: хранилище данных и модель работают отлично, когда я вхожу статическиданные в хранилище данных, используя параметр data: [{json data}] хранилища.Но сделать это с помощью прокси-сервера ajax не удается (хотя в chrome я вижу, что test.php вызывается и выводит данные json (см. Test.php ниже).

Это мой магазин:

new Ext.data.Store({
        model: "SearchResult",
        proxy: {
            type: "ajax",
            url : "test.php",
            extraParams : 'test',
            reader: {
                type: "json",
            }
        },

    }); 

Я загружаю его при нажатии кнопки с помощью обработчика.

Вот что отражено в test.php:

<?php
echo "[{stock: 'Tommy', storePhone: '353535', year: '1984', make: 'Ferrari', trim: 'trim', miles: '12345', storename: 'branch name' }]";
?>

Я застрял на этом дляв то время как любая помощь высоко ценится!

Ответы [ 3 ]

3 голосов
/ 05 сентября 2011

Недостаточно отобразить строку, которая выглядит как ваш json ... вы должны использовать php методы для ее кодирования ... для вашего примера это будет

<?php
    $data = array(array('stock'=> 'Tommy', 'storePhone'=> 353535, 'year'=> '1984', 'make'=> 'Ferrari', 'trim'=> 'trim', 'miles'=> '12345', 'storename'=> 'branch name' ));
    echo json_encode($data);
?>
0 голосов
/ 23 февраля 2013

Это решает проблему store.proxy.url = 'loader.php?user=' + var_here; store.load();

0 голосов
/ 05 сентября 2011

Вам необходимо предоставить свойство success: true и поместить ваши данные в корневое свойство в вашем ответе JSON.

Затем вы должны добавить корневое свойство в конфигурацию вашего читателя.

{
    "success": true,
    "rows": [
        {
            "stock": "Tommy",
            "storePhone": "353535",
            "year": "1984",
            "make": "Ferrari",
            "trim": "trim",
            "miles": "12345",
            "storename": "branchname"
        }
    ]
}

Ваш магазин:

new Ext.data.Store({
        model: "SearchResult",
        proxy: {
            type: "ajax",
            url : "test.php",
            extraParams : 'test',
            reader: {
                type: "json",
                root: 'rows'
            }
        },

    }); 
...