2012-10-01 69 views
0

我有關於從一個字符串傳遞Ext.formPanel文本框的代碼的另一部分一個問題。問題是,我在formPanel中有兩個「textfield」,我希望我輸入的詞作爲代碼中「url」的一部分。可能你可能會問,爲什麼這個人想要那個?這是因爲我使用的「url」有一個PHP腳本,它可以生成存儲在postgis數據庫表中的特性,如GeoJSON。傳遞字符串「文本框」到另一部分的代碼

此代碼:

[CODE] 
// define the data source 
    var protocol = new OpenLayers.Protocol.HTTP({ 
    url: "http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=" + "column" + ilike '%"string"%', 
    format: new OpenLayers.Format.GeoJSON({ 
     ignoreExtraDims: true, 
     'internalProjection': new OpenLayers.Projection("EPSG:900913"), 
     'externalProjection': new OpenLayers.Projection("EPSG:4326") 
    }) 
}); 

formPanel = new GeoExt.form.FormPanel({ 
    title: "Place Name Search", 
    height: 150, 
    region: "north", 
    protocol: protocol, 
    items: [{ 
     xtype: "textfield", 
     id: "column", 
     emptyText: "Choose table column", 
     fieldLabel: "Choose table column", 
     width: 200, 
     allowBlank: false 
    }, { 
     xtype: "textfield", 
     id: "string", 
     emptyText: "Search inside table", 
     fieldLabel: "Enter a word to search", 
     width: 200, 
     allowBlank: false 
    }], 
    listeners: { 
     actioncomplete: function(form, action) { 
      features = action.response.features; 
      store.loadData(features); 
      vm=map.getLayersByName("Results"); 
      if(vm.length===0){ 
       vecLayer = new OpenLayers.Layer.Vector("Results"); 
       map.addLayer(vecLayer); 
       store.bind(vecLayer); 
       select.bind(vecLayer); 
      } 
     } 
    }, 
buttons: [{text: 'search', 
     handler: function(){ 
      formPanel.search(); 
     } 
    }], 
    keys: [{ key: [Ext.EventObject.ENTER], 
     handler: function() { 
      formPanel.search(); 
     } 
    }] 
}); 
[/CODE] 

這是我已經測試的情況:

  1. 網址:http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom:這會產生全表 「boreholes_point_wgs84」 作爲GeoJSON的。
  2. 網址:http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=station ilike '%llena%':這僅生成一個特徵,即具有「LLENA」,在「站」列中的特徵。所以,通過這種方式,我可以通過搜索表單找到該功能。

我當時的想法是,如果我可以通過這兩個字符串我在「文本框」中輸入和修改的方式,「URL」,它可以捕捉這兩個詞和形式,例如,第二種情況我放在上面。我玩這個:

網址:http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=" + "column" + ilike '%"string"%',因此,使用我的每個的xtype以下指定的「ID」,但它不工作。

我明白任何支持這一點,在此先感謝,

最好的問候,

格里

回答

0

我很確定this solution將有助於理解如何解決這個問題,我解決了自己。

0

的正確方法,這是一個簡單的表單提交。文本輸入值將以表單發送到服務器。服務器端應該解析提交的值並做必要的事情。這與使用純HTML和任何服務器端框架沒有任何區別。

或者你可以強迫你使用表單HTTP GET方法而不是POST,然後您的輸入值將是你的URL的一部分提交。在ExtJS中使用'method'配置。見API文檔:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.Basic-cfg-method

編輯:如果你不是在實際上「提交」的形式在所有有興趣,你可以得到你這樣的字段值:form.findField(「MyField的」)值

+0

感謝您的答案,我使用這個,因爲通過聽衆我得到的信息來繪製Openlayers中的功能,順便說一句,我忘了提及這與Openlayers一起,對不起,我要修改標籤。 – Gery

+0

看到我上面的編輯。 – dbrin

相關問題