0

formPanel内のコンボボックスから値を取得して(openlayers.protocol.httpの)プロトコルURLに渡そうとしています。これは、 http://jsbin.com/ireqed/2/editに基づいて取得したいURLです(コンボボックスで「cars」を選択し、テキストフィールドに「cool」と入力する場合)。

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

テスト後、コンボボックスで1つの値を選択し、テキストフィールドに単語を入力した後(上記のように)、最終的に必要なURLを取得できます。

formPanelのプロトコルでこの新しいURLを送信するには、検索ボタンのハンドラー関数でautoLoad呼び出しを使用します。これはURLを送信していると思いますが、プロトコル自体(XMLHttpRequest.jsなど)ではなくExtJSでキャッチされます。 。そのため、GeoJSONの出力はformPanelに表示されます。これを示すために3つのPNGを添付しました:「検索」ボタンを押す前のformPanel、、。「検索」ボタンを押した後のフォームパネルFirebugでの出力

ファイアバグでは、「検索」ボタンを押すと2つのURLが呼び出され、最初のURLはプロトコルのURLで置き換えたいURLですが、ext-base.jsに移動します。これは間違った場所です。2つ目は、なぜ送信されるのか実際にはわかりませんが、適切な場所であるXMLHttpRequest.jsに移動しますが、送信すべきではありません。

したがって、最初にURLを送信する前に、URLを変更する必要があります。どうすればよいですか?ところで、ExtJSに属する存在しないURLを置き換えているようです、plsヘルプ、ありがとう

更新#1:

近づく...OpenLayers.loadURL(myurl, {}, null, function(response){});ハンドラー関数を追加すると、URLがXMLHttpRequest.js(正しい場所)に送信されますが、すぐに別のURL(フォームパネルから)が同じ場所に送信され、これが正しい場所をカバーするため、方法はありますかopenlayers.loadurl関数にタイミングを追加するには?この関数は非同期で機能することを理解しています(そのため、2番目の関数よりも高速で最初に送信されます)、2番目の関数を上書きする方法はありますか? 2つのURLが送信され、最初のURLは正しいURLです

4

1 に答える 1

0

解決策は、formPanelの外部でプロトコルを取得し、「protocol.options.url = newUrl;」のみを使用することでした。完全な説明は、ここにあります

于 2013-02-14T16:29:01.503 に答える