OpenLayers.Protocol.HTTP中的“TypeError:this.options为null”

时间:2013-02-13 23:26:13

标签: openlayers javascript

我正在使用带有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吗?是否可以在原件之后发送新的?

我非常感谢你们的支持,感谢提前,

1 个答案:

答案 0 :(得分:0)

解决方案是仅使用“protocol.options.url = newUrl;”而不是protocol.destroy();或protocol.read();,完整的解释是here