2013-02-26 48 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 
    });