"TypeError: this.options is null" in OpenLayers.Protocol.HTTP



我将OL 2.11与GeoExt 1.1一起使用。在测试和修改此GeoExt示例后:http://geoext.org/lib/GeoExt/widgets/form/FormPanel.html,我在破坏和读取新协议时遇到了问题,我在firebug中得到了"TypeError:this.options is 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.dedestroy();"的情况下,原始协议和新协议都会被发送,但总是在新协议之后发送原始协议,这是因为请求是AJAX?有可能在原件之后再寄新的吗?

我非常感谢对此的支持,提前感谢

解决方案是只使用"protocol.options.url=newUrl;"而不是protocol.destroy();或protocol.read();,完整的解释在这里

最新更新