ExtJS、OpenLayers:在发送之前修改url协议
Posted
技术标签:
【中文标题】ExtJS、OpenLayers:在发送之前修改url协议【英文标题】:ExtJS, OpenLayers: modify url protocol before it is sent 【发布时间】:2013-01-01 02:05:21 【问题描述】:我正在尝试从 formPanel 内的组合框中获取一个值,以将其传递给协议 url(openlayers.protocol.http 的)。这是我想要获取的基于http://jsbin.com/ireqed/2/edit 的网址(如果我在组合框中选择“汽车”并在文本字段中输入“酷”):
http://www.mop.org/fs/cars?format=GeoJSON&comments__ilike=cool&queryable=comments
经过测试,在combobox中选择一个值并在textfield中输入一个单词后,我终于可以得到我想要的URL(如上)。
为了在 formPanel 中的协议中发送这个新 URL,我在搜索按钮的处理函数中使用了 autoLoad 调用,我认为这是在发送 url,但它没有被协议本身捕获(即 XMLHttpRequest.js)但对于 ExtJS。因此,GeoJSON 输出显示在 formPanel 中。我附上了三个 PNG 来展示这个:、、。
在 firebug 中,一旦按下“搜索”按钮,就会调用两个 URL,第一个是我想在协议的 url 中替换的 URL,但它转到了 ext-base.js,这是错误的地方.第二个,我其实不知道为什么要发送,到 XMLHttpRequest.js 是正确的地方,但它不应该发送。
所以,在必须首先发送 url 之前,我需要更改它,我该怎么做?顺便说一句,在我看来它正在替换一个不存在的属于 ExtJS 的 url,请帮助,谢谢
更新 #1:
越来越近了...因为在处理函数中添加 OpenLayers.loadURL(myurl, , null, function(response));
会将 url 发送到 XMLHttpRequest.js(正确的位置),但是会立即将另一个 url(来自表单面板)发送到同一个位置,这涵盖了正确的一,有没有办法给 openlayers.loadurl 函数添加一些时间?我知道这个函数是异步工作的(这就是为什么比第二个更快并且首先提交),有没有办法覆盖第二个?
【问题讨论】:
在组合框配置中添加name
:)
@A1rPim 感谢您的回答,但这不是问题,我编辑了问题以更好地解释它[我想是的 =)]
尝试在jsfiddle.net上创建您的示例
Ext.getCmp('idcombo').getValue() 将返回当前选择的值。但是您想在代码中的哪个位置获得组合值?
@AvinashT。感谢您的回答,我按照您的建议在 jsbin.com 中创建了一个示例,这里是:jsbin.com/ireqed/2/edit。这段代码有一些改进,我现在可以得到我想要的 URL,但不知道如何在 formpanel 中替换它。我试过 jsfiddle.net 但没有运气来创建它。我编辑了我的原始问题以添加更多细节和数据。
【参考方案1】:
解决方案是把协议放在formPanel之外,只使用“protocol.options.url = newUrl;”,完整的解释是here
【讨论】:
以上是关于ExtJS、OpenLayers:在发送之前修改url协议的主要内容,如果未能解决你的问题,请参考以下文章