0

Google マップ v2 プロジェクトを v3 にアップグレードしています。これまでのところうまくいっていますが、まだ解決策を見つけることができていない問題に遭遇しました (回避策はありますが)。

マップへの訪問者は、場所をクリックして、緯度と経度を情報ウィンドウに表示し、そのデータを XML ファイルに保存できます。v2でこれが正常に機能しました。

v3 でも動作しますが、危険と思われる Ajax チェックをすべて削除した場合に限ります。v2 で私が持っていた:

        var request = GXmlHttp.create();

// open the request to storeMarker.php on server
request.open('GET', 'storeMarker.php' + getVars, true);
request.onreadystatechange = function() {
    if (request.readyState == 4) {
        // the request is complete
        var xmlDoc = request.responseXML;
        // retrieve the root document element (response)
        var responseNode = xmlDoc.documentElement;
        // retrieve the type attribute of the node
        var type = responseNode.getAttribute("type");

        // retrieve the content ofthe responseNode
        var content = responseNode.firstChild.nodeValue;

        //check to see if it was an error, or success
        if (type != 'success') {
            alert(content);
        } else {
            // create a new marker and add its info window
            var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));
            var marker = makeTempMarker(latlng, content, bus);
            map.addOverlay(marker);
            map.closeInfoWindow();
        }
    }

どういうわけか、GXmlHttp.create() は、XML ではなく「storeMarker.php」と呼んでいるファイルに対処したようです。storeMarker.php ファイルは XML ファイルを開きます (新しいマーカーを正常に保存します)。このコードは、「Beginning Google Maps Applications with PHP and Ajax」(Apress: Purvis, Sambells & Turner, 2006) から派生したもので、v2 にのみ適用されます。

GXmlHttp.create() は v3 では使用できなくなりました。代わりに、Ajax リクエストを開く短いクロスブラウザー関数を使用しました (関数はここでは再現されていません)。

    var request = getAjaxObject();

これで、JS は「request.responseXML」でチョークします。「request.responseText」を試しましたが、(当然のことながら)それも機能しません。

私の質問は、代わりに何をすればよいですか?

上で述べたように、「status == 200」チェックを超えて応答チェックを削除し、適切な v3 構文を使用すると、マーカー データが保存され、一時的なマーカーが適切に表示されます。しかし、それは「安全」ではありません。

4

1 に答える 1