2015-05-20 152 views
0

我有一个名为auction.xml的文件,位于名为data的文件夹中。调用它的JavaScript位于名为htdocs的另一个文件夹中名为A2的文件夹中。我如何从htdocs中调用它?我尝试过../../data/auction.xml,但它不起作用。我曾尝试调用它在同一文件夹中的另一个文件和工作。我在PHP中使用的代码是Javascript获取文件路径

$url = '../../data/customers.xml'; 

,然后将其放入

if(filesize($url)>0) 

这是我想调用JavaScript的

var url = "../../data/auction.xml"; 
xmlhttp.open("GET",url,false); 

然而,第二个没有按”工作。

电流功能

var url = "getAuction.php"; 
xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var xmlDoc=xmlhttp.responseText; 
     var str; 
     var i; 
     str=("<p>Category : <select onchange=\"reveal(this)\" name=category>"); 
     var categoryList= []; //Array contains the distinct values 
     var x=xmlDoc.getElementsByTagName("Product"); 
     var cy=xmlDoc.getElementsByTagName("Category"); 
     if(x.length>0) 
     { 
      for (i=0;i<x.length;i++) 
      { 
       var category=cy[i].childNodes[0].nodeValue; 
       var currentOption ="<option value=" + category + ">" + category + "</option>"; 
       //Verify is category has already be added 
       if(!contains(categoryList,category)) 
       { 
        categoryList.push(category); 
        str += currentOption; 
       } 
      } 
      str+="<option id=\"others\" value=\"Others\">Others</option>"; 
     } 
     else 
     str+="<option id=\"others\" value=\"Others\">Others</option>"; 
     str+=("</select></p>"); 
     document.getElementById('category').innerHTML=str; 
    } 
} 
xmlhttp.open("GET",url ,false); 
xmlhttp.send(); 

回答

0

../../data/auction.xml

不是一个URL,这样你就可以不通过一个HTTPRequest,达到它。您必须使用JavaScript调用.php - 为您获取Xml的页面。 PHP具有在服务器上执行的好处,您可以访问它上面的所有本地文件。 Javascript在浏览器中的客户端上运行。

Javascript: 
var url = "getAuction.php"; 
xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var xmlDoc=xmlhttp.responseText; 
     console.log(xmlDoc); 
     //do smoething with xmlDoc 

    } 
} 
xmlhttp.open("GET",url ,false); 
xmlhttp.send(); 

getAuction.php: 
echo file_get_contents("../../data/auction.xml"); //or whatever you want to do with the xml 

这个例子中的php文件需要和javascript在同一个目录下。

XmlHttpRequests是异步的。所以你需要定义一个回调,当次申请准备,如:

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var xmlDoc=xmlhttp.responseText; 
     console.log(xmlDoc); 
     //do smoething with xmlDoc 

    } 
} 
xmlhttp.open("GET","auction.xml",false); 
xmlhttp.send(); 

从SO Exception xml.getElementsByTagName is not a function, when trying to parse an xml

你的警报说法是错误的。 xmlDoc没有方法getElementsByTagName。

可以使用获得的第一个城市:xmlDoc中,[0] .getElementsByTagName()

+0

我试着那样做,但是,没有我数据加载。我编辑了代码,在问题中添加我的功能。你能看到我可以改变它吗? – JianYA

+0

但是,如果我的getAuction文件与xml文件位于同一目录中,那么javascript是不是无法检测到它?那是我如何将信息传递给JavaScript? – JianYA

+0

如果xml与javascript位于同一个目录中,则它完全可以调用xml direct –

0

在PHP脚本

url:"<?php echo site_url('controller/function_name');?>", 
+1

我在哪里放置这个?什么是控制器/功能名称? – JianYA