【问题标题】:How to read the XML with JS (Google Maps API)如何使用 JS 读取 XML(Google Maps API)
【发布时间】:2018-01-28 04:49:30
【问题描述】:

我试图到处寻找,但我似乎找不到答案,而且似乎根本无法弄清楚我在这里做错了什么。目前的问题是 JS 中的 var postLink 没有从 XML 中的 postLink 获取值。

所以我想做的是在谷歌地图上添加标记。所有标记数据都存储在 mysql 数据库中。根据 Google 提供的文档,转换为使用 PHP 先转换为 XML 比将其用于 JS 中的所有变量要快。

PHP 似乎很好地回显了 XML,所以我猜测问题出在 JS 的某个地方。为了完整起见,我将两者都发布(为了简单起见,直到出现问题为止)。

JS:

downloadUrl('PHP/markerInfoXML.php', function (data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName('markers');
    Array.prototype.forEach.call(markers, function (markerElem) {
        var postLink = markerElem.getAttribute('postLink');
    });
});

function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
    new ActiveXObject('Microsoft.XMLHTTP') :
    new XMLHttpRequest;

request.onreadystatechange = function () {
    if (request.readyState == 4) {
        request.onreadystatechange = doNothing;
        callback(request, request.status);
    }
};

request.open('GET', url, true);
request.send(null);
}

function doNothing() {}

PHP

<?php
header('Content-Type: text/plain');
include('connection.php');

// Select all the rows in the markers table
$sql    = "SELECT * FROM markerinfo";
$result = $conn->query($sql);

$doc     = new DOMDocument('1.0');
$node    = $doc->createElement("markers");
$parnode = $doc->appendChild($node);

while ($row = $result->fetch_assoc()) {

$node    = $doc->createElement("marker");
$newnode = $parnode->appendChild($node);

$newnode->setAttribute("postLink", $row['postLink']);
}


$xmlfile = $doc->savexml();
echo $xmlfile
?>

PHP 的 XML 输出:

<markers><marker postLink="https://steemit.com/travel/@martibis/when-the-road-calls-1"/></markers>

如果这里有人可以为我指明正确的方向,那就太棒了!

【问题讨论】:

  • 有什么问题?
  • 在 JS 中,var postLink 没有得到任何值(我应该将它添加到帖子中)!

标签: javascript php xml google-maps


【解决方案1】:

改变

var markers = xml.documentElement.getElementsByTagName('markers');

var markers = xml.getElementsByTagName('marker');

PHP 也应该更好地设置header('Content-Type: application/xml');

【讨论】:

  • s 是一个错字,但是像你说的那样设置标题就可以了,真不敢相信就是这样!非常感谢,我为此浪费了很多时间!
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2012-05-17
  • 2012-11-20
  • 2014-11-12
  • 2011-09-06
  • 2011-06-29
  • 1970-01-01
相关资源
最近更新 更多