2015-05-20 3 views
0

У меня есть файл auction.xml, который находится в папке с именем data. Javascript, который его вызывает, находится в папке с именем A2 в другой папке htdocs. Как мне это назвать из htdocs? Я пробовал ../../data/auction.xml, но он не работает. Я попробовал называть его, используя php для другого файла в той же папке, и это сработало. Код, который я использовал в 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

Где я могу это поставить? Что такое имя контроллера/function_name? – JianYA

Смежные вопросы