1

GeoExt1.1でOL2.11を使用しています。このGeoExtの例をテストおよび変更した後:http://geoext.org/lib/GeoExt/widgets/form/FormPanel.html 新しいプロトコルの破棄と読み取りに問題があり、「TypeError:this.optionsisファイアバグのnullHTTP.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であるために発生しますか?オリジナルの後に新しいものを送ることは可能ですか?

よろしくお願いします。

4

1 に答える 1

0

解決策は、「protocol.options.url = newUrl;」のみを使用することでした。protocol.destroy(); の代わりに または protocol.read();、完全な説明はこちら

于 2013-02-14T16:17:31.050 に答える