我正在使用 OL 2.11 和 GeoExt 1.1。测试并修改此 GeoExt 示例后: http://geoext.org/lib/GeoExt/widgets/form/FormPanel.html ,我在销毁和读取新协议(protocol)时遇到问题,我在 firebug 中收到“TypeError: this.options is null HTTP.js (line 180)”。我从第 180 行了解到的是,新选项(在新协议(protocol)中)不存在,不确定这是否是问题以及如何解决它。这是原始协议(protocol)(在 FormPanel 外部创建):
protocol = new OpenLayers.Protocol.HTTP({
url: '/fs/',
format: new OpenLayers.Format.GeoJSON({
ignoreExtraDims: true,
'internalProjection': new OpenLayers.Projection('EPSG:900913'),
'externalProjection': new OpenLayers.Projection('EPSG:4326')
})
});
这是在 FormPanel 末尾创建新协议(protocol)的代码:
buttons: [{
text: 'Search',
handler: function() {
comboLayer = Ext.getCmp('idcombo').getValue();
keyword = Ext.getCmp('idtextfield').getRawValue();
protocol.destroy();
protocol = new OpenLayers.Protocol.HTTP({
url: '/fs/' + comboLayer + '?format=GeoJSON&comments__ilike=' + keyword + '&queryable=comments',
format: new OpenLayers.Format.GeoJSON({
ignoreExtraDims: true,
'internalProjection': new OpenLayers.Projection('EPSG:900913'),
'externalProjection': new OpenLayers.Projection('EPSG:4326')
})
});
protocol.read();
formPanel.search();
}
}]
如果我删除“protocol.destroy();”,原始协议(protocol)和新协议(protocol)都会发送,但原始协议(protocol)总是在新协议(protocol)之后发送,发生这种情况是因为请求是 AJAX?可以在原件之后发送新的吗?
非常感谢您对此的支持,提前致谢,
最佳答案
解决方案是仅使用“protocol.options.url = newUrl;”而不是protocol.destroy();或protocol.read();,完整的解释是here
关于openlayers - OpenLayers.Protocol.HTTP 中的 "TypeError: this.options is null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865195/