我正在使用带有GeoExt 1.1的OL 2.11。在测试并修改了这个GeoExt示例:http://geoext.org/lib/GeoExt/widgets/form/FormPanel.html后,我遇到了破坏和读取新协议的问题,我在firebug中遇到“TypeError:this.options为null HTTP.js(第180行)”。我从这一行180中理解的是,新选项(在新协议中)不存在,不确定这是否是问题以及如何解决它。这是原始协议(在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末尾的代码:
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();”的情况下,原始协议和新协议都被发送,但是在新协议之后始终发送原始协议,这是因为请求是AJAX吗?是否可以在原件之后发送新的?
我非常感谢你们的支持,感谢提前,
答案 0 :(得分:0)
解决方案是仅使用“protocol.options.url = newUrl;”而不是protocol.destroy();或protocol.read();,完整的解释是here