【问题标题】:Google maps Ajax call: differences between v2 and v3谷歌地图 Ajax 调用:v2 和 v3 之间的差异
【发布时间】:2013-11-01 00:31:52
【问题描述】:

我正在将谷歌地图 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() 似乎以某种方式处理了我称之为“storeMarker.php”而不是 XML 的文件。 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”,但是(不出所料)这也不起作用。

我的问题是,我该怎么做?

正如我上面所说的,如果我删除了“状态 == 200”检查之外的响应检查,并使用适当的 v3 语法,标记数据将被保存并适当地显示一个临时标记。但感觉并不“安全”。

【问题讨论】:

  • 当您想知道为什么 V3 代码不起作用时,为什么要发布您的 V2 代码?
  • 因为(到目前为止)我的 V3 代码是相同的,除了请求的初始实例化。抱歉,如果我没有说清楚。

标签: php ajax google-maps-api-3


【解决方案1】:

我现在发现'storeMarker.php' 文件应该有一个标题'header('Content-Type: text/xml');'。 (它在翻译中丢失了)。把它放回去已经让我进入脚本的下一行(!),但我希望我能从这里解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2013-02-20
    • 1970-01-01
    • 2011-07-08
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多