Javascript获取文件路径

时间:2015-05-20 06:13:19

标签: javascript php

我有一个名为auction.xml的文件,该文件位于名为data的文件夹中。调用它的javascript位于另一个名为htdocs的文件夹中名为A2的文件夹中。我如何从htdocs调用它?我试过了../../data/auction.xml,但它没有用。我已经尝试使用php在同一个文件夹中的另一个文件上调用它并且工作正常。我在php中使用的代码是

$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();

2 个答案:

答案 0 :(得分:0)

  

../../数据/ auction.xml

不是网址,因此您无法通过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()

答案 1 :(得分:0)

在脚本中的php

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