Extjs 3.4在ajax调用后填充网格

时间:2014-06-30 19:50:20

标签: json extjs

使用Extjs 3.4 我的Web服务使用json字符串进行响应:{"msg":"Some"} 我想用Some填充网格。

Ext.onReady(function(){

  var store = new Ext.data.JsonStore({
     url: "my/json/url.json",
     fields: [{name:"msg"}]
  });

  function StoreLoadCallback(records, operation, success){
      if (success) {
        console.log(records);   // record is undefined
        alert(records); // show 'undefined'
      } else {
        console.log('error');
      }
  }

  function ajaxSearch_function(){
  var query = Ext.getCmp('search').getValue();
    store.load({
        params: {query: query},
        callback: StoreLoadCallback      
    }); 
  }

  var form = new Ext.FormPanel({
    defaultType: 'textfield',
    items: [{
      fieldLabel: 'search',
      name: 'search',
      id: 'search'
    }],

    buttons: [{
      text: 'Search', handler: ajaxSearch_function
    }]
  });  

  form.render('ajax-search_form');

  var grid = new Ext.grid.GridPanel({
    store: store,
    columns: [{
        id       :'title',
        header   : 'title', 
        sortable : true, 
        dataIndex: 'title'
      }],
  });

  grid.render('ajax-grid');
});

Web服务响应很好,我已经使用Curl进行了测试。 问题是用json响应填充网格。

1 个答案:

答案 0 :(得分:1)

如果您说回调方法中的记录变量未定义,则解析响应可能存在问题。我想它需要数组而不是一条记录。尝试将json文件的内容从{"msg" : "Some"}更改为[{"msg" : "Some"}]

在跨过这个障碍(即正确解析了响应)之后,我看到你的datagrid列引用了" title"而不是" msg"。标题不是商店的成员,因此列无论如何都会显示空值。

此外,以大写字母开始方法名称并不常见(除了它们代表"类"),因此调用方法storeLoadCallback而不是StoreLoadCallback更好。