开发者

Ajax data still not being loaded into data store

I asked this question before the weekend and am still stuck despite following the advice. This time I will post all of the relevant code in the hope someone can help me get to the bottom of this.

Important note: the data store and model work perfectly when I statically enter the data into the data store using the data: [{ json data }] parameter of the store. But doing it using ajax proxy fails (even though I can see in chrome that test.php gets called and echoes out the json data (see test.php below).

This is my store:

new Ext.data.Store({
        model: "SearchResult",
        proxy: {
      开发者_StackOverflow中文版      type: "ajax",
            url : "test.php",
            extraParams : 'test',
            reader: {
                type: "json",
            }
        },

    }); 

I load it when a button is clicked on via a handler.

Here is what is echoed out in test.php:

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

Been stuck on this for a while so any help much appreciated!


It;s not enough to echo a string that looks like your json ... you should use php methods to encode it ... for your example it will be

<?php
    $data = array(array('stock'=> 'Tommy', 'storePhone'=> 353535, 'year'=> '1984', 'make'=> 'Ferrari', 'trim'=> 'trim', 'miles'=> '12345', 'storename'=> 'branch name' ));
    echo json_encode($data);
?>


You need to provide a "success: true" property and put your data into a root property in your JSON response.

You should then add the root property to your reader's config.

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

Your store:

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

    }); 


This solves the issue store.proxy.url = 'loader.php?user=' + var_here; store.load();

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜