0

我正在尝试从 formPanel 内的组合框中获取一个值,以将其传递给协议 url(openlayers.protocol.http 的)。这是我想要获取的基于http://jsbin.com/ireqed/2/edit的 url (如果我在组合框中选择“cars”并在文本字段中输入“cool”):

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

经过测试,在组合框中选择一个值并在文本字段中输入一个单词后,我终于可以得到我想要的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 函数添加一些时间?我知道这个函数是异步工作的(这就是为什么比第二个更快并且首先提交),有没有办法覆盖第二个? 发送了两个 url,第一个是正确的

4

1 回答 1

0

解决方案是将协议放在 formPanel 之外,只使用“protocol.options.url = newUrl;”,完整的解释在这里

于 2013-02-14T16:29:01.503 回答