Extjs Ajax数据仍然没有加载到数据存储中

Extjs Ajax数据仍然没有加载到数据存储中,extjs,sencha-touch,Extjs,Sencha Touch,我在周末前问了这个问题,尽管我听从了建议,但我还是被卡住了。这次我将发布所有相关的代码,希望有人能帮助我找到这个底部 重要注意事项:当我使用存储区的data:[{json data}]参数静态地将数据输入数据存储区时,数据存储区和模型可以完美地工作。但是使用ajax代理无法实现这一点(尽管我可以在chrome中看到test.php被调用并回显json数据(参见下面的test.php) 这是我的商店: new Ext.data.Store({ model: "SearchResul

我在周末前问了这个问题,尽管我听从了建议,但我还是被卡住了。这次我将发布所有相关的代码,希望有人能帮助我找到这个底部

重要注意事项:当我使用存储区的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' }]";
?>

仅回显类似于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);
?>

仅回显类似于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);
?>

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

然后应该将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'
            }
        },

    }); 
您需要提供一个“success:true”属性,并将数据放入JSON响应中的根属性中

然后应该将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'
            }
        },

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

这就解决了这个问题
store.proxy.url='loader.php?user='+var_;

store.load();

不一定,…你不需要提供一个成功:是的,但这样做是一个好的设计,要知道操作何时成功…不一定,…你不需要提供一个成功:是的,但这样做是一个好的设计,要知道操作何时成功。。。