0

我正在尝试根据在 mysql 数据库中提交的值在谷歌地图上放置标记。使用 PHP 动态加载 xml 时,由于 responseXML.DocumentElement 属性未得到重视,因此不会在地图上放置任何标记。当我从静态文件加载 XML 时它可以工作,而不是从数据库动态加载时。

这是不起作用的页面:http
://www.thirstygolfer.com/utils/maptest2.html 这是起作用的页面:http ://www.thirstygolfer.com/utils/maptest1.html

这是生成 xml 的 PHP 文件:www.thirstygolfer.com/utils/xmldump3.php

这是来自 thirstygolfer.com/utils/xmldump3.php 的 PHP 代码(减去数据库连接信息):

<?php

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

$result=mysql_query("SELECT * FROM Main WHERE State='MA' and FirstLetter='A'");

header("Content-type: text/xml");

while ($row = mysql_fetch_assoc($result)){    

$node = $dom->createElement("marker");   
$newnode = $parnode->appendChild($node);     
$newnode->setAttribute("id",$row['id']);  
$newnode->setAttribute("lat", $row['Lat']);    
$newnode->setAttribute("lng", $row['Lon']);    
} 

echo $dom->saveXML();

?>

请帮忙!!

4

3 回答 3

1

您生成的 XML 在输出顶部包含空白行,这将使其无效 XML。这可能是因为包含的 PHP 文件在第一个之前<?php或最后一个之后都有空行?>

您可能还需要进行设置header('Content-Type: text/xml'),以便浏览器知道它是什么类型的数据。

于 2013-01-11T18:36:25.690 回答
0

XML 上的标头不正确(来自web-sniffer.net

HTTP Response Header
Name    Value   Delim
Status: HTTP/1.1 200 OK
Date:   Fri, 11 Jan 2013 18:38:04 GMT   
P3P:    policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"   
Content-Type:   text/html   
Age:    0   
Connection: close   
Server: YTS/1.19.11:

Content-Type 必须是“text/xml”

于 2013-01-11T18:42:09.557 回答
0

此问题已解决。感谢您的帮助。我的代码有两个问题:

1.) 内容类型是“text/html”。我需要将以下行添加到我的 php 脚本中:

header("Content-type: text/xml");

2.) xml 文件顶部有空行。IE 处理了它,但 Chrome 和 FF 有问题。我删除了文件顶部的多余行,它现在可以在所有浏览器中使用。

于 2013-01-13T15:23:33.543 回答