Ajax数据仍未加载到数据存储中

时间:2011-09-05 09:15:24

标签: extjs sencha-touch

我在周末之前问了这个问题,尽管遵循了这个建议但仍然陷入困境。这次我将发布所有相关代码,希望有人能帮助我深究这一点。

重要说明:当我使用商店的数据:[{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 个答案:

答案 0 :(得分:3)

它;不足以回显一个看起来像你的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);
?>

答案 1 :(得分:0)

您需要提供“success:true”属性,并将您的数据放入JSON响应中的root属性中。

然后,您应该将root属性添加到阅读器的配置中。

{
    "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'
            }
        },

    }); 

答案 2 :(得分:0)

这解决了这个问题 store.proxy.url = 'loader.php?user=' + var_here; store.load();