2013-11-24 42 views
-1

感謝您的時間。 我正在研究基於Google開發人員的作業項目:https://developers.google.com/maps/articles/phpsqlsearch_v3#outputxml。基本上我使用PHP從URL中拉取XML內容,然後使用JavaScript在HTML文件中讀取它。有趣的東西吧?我從來沒有寫過PHP,所以我不確定我是否正確地編寫了它。下面是我的PHP:PHP引入來自URL的XML

<?php 

// Get parameters from URL - PHP accepting 2 variables from index.html 
$address = $_GET["address"]; 
$radius = $_GET["radius"]; 
// ------------------------------------------------------------------ 

// Start XML file 
$dom = new \DOMDocument("1.0"); 

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

$dom = file_get_contents('http://api.remix.bestbuy.com/v1/stores(area(' + $address + ',' + $radius + '))?show=name,address,distance,lat,lng&apiKey=fuzgmrj4nv8v9ummatn78m3k'); 
file_put_contents('file.xml', $dom); 

echo $dom->saveXML(); 
?> 

這是閱讀PHP生成的xml的JavaScript:

function searchLocationsNear(center) { 
    clearLocations(); 

    var address = document.getElementById("addressInput").value; 
    var radius = document.getElementById('radiusSelect').value; 
    var searchUrl = 'phpGenXML.php?address=' + address + '&radius=' + radius; 
    downloadUrl(searchUrl, function(data) { 
     var xml = parseXml(data); 
     var markerNodes = xml.documentElement.getElementsByTagName("marker"); 
     var bounds = new google.maps.LatLngBounds(); 

     //Create markers 
     for (var i = 0; i < markerNodes.length; i++) { 
     var name = markerNodes[i].getAttribute("name"); 
     var address = markerNodes[i].getAttribute("address"); 
     var distance = parseFloat(markerNodes[i].getAttribute("distance")); 
     var latlng = new google.maps.LatLng(
       parseFloat(markerNodes[i].getAttribute("lat")), 
       parseFloat(markerNodes[i].getAttribute("lng"))); 

     createOption(name, distance, i); 
     createMarker(latlng, name, address); 
     bounds.extend(latlng); 
     } 
     map.fitBounds(bounds); 
     locationSelect.style.visibility = "visible"; 
     locationSelect.onchange = function() { 
     var markerNum = locationSelect.options[locationSelect.selectedIndex].value; 
     google.maps.event.trigger(markers[markerNum], 'click'); 
     }; 
     }); 
    } 

所以我很擔心,我做錯了什麼,而在XML拉動。任何人都可以告訴我,如果它看起來好嗎?

感謝, 湯米

+1

[代碼審查(http://codereview.stackexchange.com/)將是這更好的地方 –

回答

0

你的PHP代碼確實有幾個誤區:

  • 串聯在PHP與.而非+完成。
  • 您正在創建DOMDocument的實例,然後重新分配給該變量。 $dom然後變成一個字符串,你試圖打電話給saveXML(),這會產生一個錯誤。
  • file_put_contents()不會做你認爲它的作用。看看documentation

試試這個:

$address = $_GET['address']; 
$radius = $_GET['radius']; 

// sanitise $address and $radius 

header('Content-type: application/xml'); 
echo file_get_contents('http://api.remix.bestbuy.com/v1/stores(area(' . $address . ',' . $radius . '))?show=name,address,distance,lat,lng&apiKey=fuzgmrj4nv8v9ummatn78m3k');