Javascript PHP从URL引入XML

Javascript PHP从URL引入XML,javascript,php,xml,Javascript,Php,Xml,谢谢你抽出时间。 我正在做基于谷歌开发者的家庭作业项目:。基本上,我使用php从URL中提取xml内容,然后使用javascript在html文件中读取。有趣的东西,对吗?我以前从未编写过php,所以我不确定我是否正确编码。下面是我的PHP: <?php // Get parameters from URL - PHP accepting 2 variables from index.html $address = $_GET["address"]; $radius = $_GET["r

谢谢你抽出时间。 我正在做基于谷歌开发者的家庭作业项目:。基本上,我使用php从URL中提取xml内容,然后使用javascript在html文件中读取。有趣的东西,对吗?我以前从未编写过php,所以我不确定我是否正确编码。下面是我的PHP:

<?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();
?>
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');
       };
      });
    }
函数搜索位置近(中){
clearLocations();
var address=document.getElementById(“addressInput”).value;
var radius=document.getElementById('radiusSelect')。值;
var searchUrl='phpGenXML.php?address='+address+'&radius='+radius;
下载URL(搜索URL,函数(数据){
var xml=parseXml(数据);
var markerNodes=xml.documentElement.getElementsByTagName(“标记”);
var bounds=new google.maps.LatLngBounds();
//创建标记
对于(变量i=0;i
因此,我担心在引入XML时我做错了什么。有人能告诉我它看起来还好吗

谢谢,
Tommy

您的PHP代码确实有几个错误:

  • PHP中的连接是通过
    而不是
    +
    完成的
  • 您正在创建
    DOMDocument
    的实例,然后重新分配给变量
    $dom
    然后变成一个字符串,您试图调用该字符串
    saveXML()
    ,这将产生一个错误
  • file\u put\u contents()
    并不像您想象的那样。看一看这张照片
请尝试以下方法:

$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');
会是个更好的地方吗