【问题标题】:Ajax data still not being loaded into data storeAjax 数据仍未加载到数据存储中
【发布时间】:2013-02-24 03:07:33
【问题描述】:

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

重要提示:当我使用 store 的 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' }]";
?>

在此停留了一段时间,非常感谢您的帮助!

【问题讨论】:

    标签: extjs sencha-touch


    【解决方案1】:

    仅仅回显一个看起来像您的 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);
    ?>
    

    【讨论】:

      【解决方案2】:

      您需要提供“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,但这样做是一个很好的设计,知道操作何时成功...
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-14
        • 2019-04-28
        • 2014-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-09
        相关资源
        最近更新 更多