2013-02-26 56 views
0

我想将组合框值传递给将执行mySQL查询的PHP文件。我使用MVC架构的Extjs 4。这是我的组合框:将组合框值传递给php extjs 4

{ 
      xtype: 'combobox', 
      id: 'cmbMetric', 
      name: 'sev', 
      mode: 'queryMode', 
      //querymode : 'lcoal', 
      fieldLabel: 'Metric', 
      store: 'MetricsData', 
      editable: false, 
      valign : 'middle', 
      margin : 15, 
      displayField:'name_metric', 
      valueField : 'id_metric' 

     } 

我的店:

onSelectedValue : function(combo) { 
    var selected = combo.getValue(); 
    var guiDataStore = this.getGuiDataStore(); 
    guiDataStore.getProxy().url = 'gui_comp_items.php?id_metric=' + selected ; 
    guiDataStore.load({ 
    params : { 
     id_metric : selected //The parameter I want to send to the php file   
     }, 
     callback:this.onGuiDataLoad, 
     scope: this 
    }); 
} 

我的PHP文件:

Ext.define('Metrics.store.GuiData', { 
extend: 'Ext.data.Store', 
model: 'Metrics.model.GuiData', 
autoLoad: true, 
idProperty: 'id_metric', 
proxy : { 
    type : 'ajax', 
    actionMethods : 'POST', 
    api : { 
    read : 'gui_comp_items.php' 
    }, 
    reader: { 
     type: 'json', 
     successProperty: 'success', 
     messageProperty: 'message', 
     root: 'data' 
    } 
} 
}); 

当我选择一个组合框的值,这个功能是由控制器进行调用

function guiCompItems() 
{ 
$id_metric = $_GET['id_metric']; 
    $sql = 'select m.id_metric, f.name_filter, gui.type_guicomp from gui_comp gui inner join filter f inner join metric m 
     on f.id_guicomp = gui.id_guicomp 
     and f.id_metric = m.id_metric 
     where m.id_metric ='. mysql_real_escape_string(trim(intval($_GET['id_metric']))); 
$result = mysql_query($sql); // result set 
while($rec = mysql_fetch_array($result, MYSQL_ASSOC)){ 
    $arr[] = $rec; 
}; 

$data = json_encode($arr); //encode the data in json format 
echo '({"success": "true", "message" : "OK","data":' . $data . '})'; 
} 

数据一直在持续s“null”。我认为这个参数没有发送到php文件。 任何帮助将不胜感激。谢谢。

回答

0

存储负载实际上不会编码请求中的参数配置。该请求由为商店配置的代理进行,因此您需要发送的任何其他参数都应在代理的额外参数配置中进行设置。像:

guiDataStore.getProxy().url = 'gui_comp_items.php?id_metric=' + selected ; 
guiDataStore.getProxy().extraParams = { 
     id_metric : selected //The parameter I want to send to the php file   
     }; 
guiDataStore.load({ 
     callback:this.onGuiDataLoad, 
     scope: this 
    });