2013-01-01 40 views
0

我試圖從formPanel裏面的組合框中獲取一個值,將它傳遞給協議url(openlayers.protocol.http)。這是URL,基於http://jsbin.com/ireqed/2/edit,我想(在情況下,我在下拉列表中選擇「汽車」,並在文本框輸入「酷」):ExtJS,OpenLayers:在發送之前修改url協議

http://www.mop.org/fs/cars?format=GeoJSON&comments__ilike=cool&queryable=comments 

測試後,我終於可以在組合框中選擇一個值並在文本框中輸入一個單詞後(如上所述)獲取我想要的URL。

要在formPanel中的協議中發送這個新的URL,我在我的搜索按鈕的處理函數中使用autoLoad調用,我認爲這是發送url但協議本身沒有捕獲它(即XMLHttpRequest.js )但ExtJS。因此,GeoJSON輸出顯示在formPanel中。我附上了三個PNG來顯示:formPanel before pressing 'search' button,formpanel after pressing 'search' button,output in firebug

在firebug中,一旦按下「搜索」按鈕,就會調用兩個URL,第一個URL是我想要在協議的URL中替換的URL,但它會轉到ext-base.js,這是錯誤的地點。第二個,我實際上不知道爲什麼發送,去XMLHttpRequest.js這是正確的地方,但它不應該被髮送。

因此,在必須首先發送網址之前,我需要更改它,我該怎麼做?順便說一句,在我看來它正在取代屬於ExtJS的不存在的網址,請幫忙,謝謝

更新#1:

越來越近......因爲在處理函數sents網址添加OpenLayers.loadURL(myurl, {}, null, function(response){}); XMLHttpRequest.js(正確的地方),但立即另一個URL(從formpanel)被髮送到同一個地方,這覆蓋了正確的,有沒有辦法給openlayers.loadurl函數添加一些時間?我明白這個函數是異步工作的(這就是爲什麼比第二個提交更快並且首先提交),是否有一種方法可以覆蓋第二個? two urls sent, the first one is the right one

+0

添加一個'name'到ComboBox配置:) – A1rPun

+0

@ A1rPim謝謝你的答案,但這不是問題,我編輯了這個問題來解釋它更好[我認爲= =]] – Gery

+0

嘗試在http://jsfiddle.net上創建你的例子 –

回答

0

解決的辦法是採取FormPanel中外部的協議,並且只使用「protocol.options.url = NEWURL;」,一個完整的解釋是here