0

mySQL クエリを実行する PHP ファイルにコンボボックスの値を渡したいと考えています。MVC アーキテクチャで 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'

        }

私の店 :

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'
    }
}
});

コンボボックスの値を選択すると、この関数がコントローラーによって呼び出されます。

    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ファイル:

 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 . '})';
}

データは常に「null」です。パラメータがphpファイルに送られていないと思います。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

ストアの読み込みは、実際にはリクエストの params 構成をエンコードしません。要求はストア用に構成されたプロキシによって行われるため、送信する必要があるその他のパラメーターは、プロキシの追加のパラメーター構成で設定する必要があります。お気に入り:

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
    });
于 2013-02-26T15:22:10.737 に答える