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协议的主要内容,如果未能解决你的问题,请参考以下文章

如何在将字段渲染到 Extjs 中的网格之前修改字段

ExtJS 4 奇怪的树加载行为

ExtJs 6.2 ComboBox 不发送远程过滤器

地理服务器将空矢量图块发送到 Openlayers

ExtJS 4.1:模态窗口似乎在提交窗口之前返回控制

openlayers6加载天地图混乱问题