0

我正在使用 extjs4 商店

在 xhtpp 调用中,它显示http://localhost/home_dir/index.php/questions/content_pie?_dc=1312366604831&hi=&page=1&start=0&limit=25

这是商店代码

    var content_type_store = new Ext.data.Store({
    proxy: new Ext.data.HttpProxy({
    url: BASE_URL+'questions/content_pie',
    method:'POST',
    params :{hi:''}

    }),
    reader: new Ext.data.JsonReader({
    root: 'results'
    }, [
    'qtype',
    'qval'
    ])
    });

即使我将方法设置为 POST,它的获取参数也会出现在 url

我使用codeigniter作为我的框架。我在 CI 中禁用了 GET 参数。Iwnat 在邮件中发送参数。使用 ext2 和 3 这段代码运行良好..

帮我

谢谢

4

1 回答 1

2

method:'POST'在代理的配置中不起作用。没有这样的配置选项。但是有两种方法可以使 store 使用POST。更简单的一个 - 只是覆盖getMethod功能:

var content_type_store = new Ext.data.Store({
  proxy: {
    type: 'ajax',
    url: BASE_URL+'questions/content_pie',
    extraParams :{hi:''},
    // Here Magic comes
    getMethod: function(request){ return 'POST'; }

  },
  reader: {
    type: 'json',
    root: 'results'
  }
});

第二种方式:覆盖代理的actionMethods属性。如果您选择这种方式,您的代理应该如下所示:

  // ...
  proxy: {
    type: 'ajax',
    url: BASE_URL+'questions/content_pie',
    extraParams :{hi:''},
    // Here Magic comes
    actionMethods: {
      create : 'POST',
      read   : 'POST',
      update : 'POST',
      destroy: 'POST'
    }
  },
  // ...
于 2011-08-03T13:03:49.587 回答