2013-01-11 16 views
0

我試圖將標記放置在谷歌地圖上,基於mysql db中提交的值。當使用PHP動態加載xml時,由於responseXML.DocumentElement屬性沒有得到重視,因此沒有標記被放置在地圖上。它在我從一個靜態文件加載XML時起作用,而不是從一個數據庫動態加載時。從PHP錯誤加載XML:Microsoft.XMLHTTP.DocumentElement null

這裏是行不通的頁面:http://www.thirstygolfer.com/utils/maptest2.html
下面是對頁面:http://www.thirstygolfer.com/utils/maptest1.html

這是PHP文件生成XML: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(); 

?> 

請幫助!

回答

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: 

內容類型必須是 「text/xml」 的

+0

謝謝!我添加了標題(「Content-type:text/xml」);並且工作。 – user1970475

1

您生成的XML在輸出的頂部包含空行,這會使其無效的XML。這可能是因爲你有包括PHP文件空行之前的第一<?php或最後?>

您可能還需要設置header('Content-Type: text/xml')以便瀏覽器知道它是什麼樣的數據之後。

+0

謝謝!我沒有注意到,因爲它在IE中工作正常。當我在Chrome和FF中嘗試它時,由於空行,它不起作用。我刪除了它們,現在它正確加載。 – user1970475

0

此問題已得到解決。感謝您的幫助。 我的代碼有2個問題:

1.)內容類型是'text/html'。我需要添加以下行到我的PHP腳本:

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

2.)xml文件在頂部有空行。 IE處理它,但Chrome和FF有問題。我刪除了文件頂部的多餘行,現在它可以在所有瀏覽器中使用。

+0

這似乎與我在我的回答中所說的很相似;你有沒有創建新答案而不是「接受」我的原因? – IMSoP