通过Javascript读取XML文件

时间:2018-04-19 07:17:04

标签: javascript xml apache flask

我是由Flask创建的Web应用程序。我通过javascript从xml文件中读取数据。它运行得很棒但是当我在apache上部署我的烧瓶应用程序时,我遇到了读取当前数据的问题。如果我在apache上更改xml文件中的某些数据,我只能看到旧数据。什么都没发生。仅当我重新启动apache服务器时,网页上的数据才会更改。怎么了 ?我尝试了很多可能性如何解析XML数据,例如ajax。

 function ReadTemperatureFromxXML() {
    var xmlDoc;
    var xmlhttp;

        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open("GET", "data.xml", false);
        xmlhttp.send();

        var xmlDoc = xmlhttp.responseXML;

        if (!xmlDoc) {
            xmlDoc = (new DOMParser()).parseFromString(xmlhttp.responseText, 'text/xml');
            var emp = xmlDoc.getElementsByTagName("temperature");
            var temperature1 = emp[0].getElementsByTagName("value")[0].firstChild.data;
            temperature1 = temperature1.concat("°C")
            document.getElementById("temperature1").innerHTML = temperature1;
            ....
}

ajax阅读代码

  /*  $.ajax({
   url: 'data.xml',
   dataType:  'xml',
   success: function(data){
       $(data).find('data temperature').each(function()
       {
         var temperature = $(this).find('value').text();
         $('.timeline').append(
                 $('<li />',{
                     text: temperature
                 })
         );

       });

   },
   error: function() {
       $('.timeline').text('Failed to get')
   }

}) * /

设置apache服务器

WSGIDaemonProcess FlaskApp user=pi group=www-data threads=5
WSGIScriptAlias / /home/pi/Kotelna/kotelna.wsgi
  <Directory /home/pi/Kotelna>
     WSGIProcessGroup FlaskApp
     WSGIScriptReloading On
     WSGIApplicationGroup %{GLOBAL}
     Require all granted
  </Directory>
Alias /static/ /home/pi/Kotelna/static/
  <Directory /home/pi/Kotelna/static/>
    WSGIScriptReloading On
    Order allow,deny
    Allow from all
  </Directory>

当你鼠标移过“)! 这也适用于reference links

   Errorlog ${APACHE_LOG_DIR}/error.log

通过我的网络浏览器,我看到网络,我可以看到xml文件的reguest。 控制台的错误列表与错误日志文件apache一样清晰。 我尝试像这样改变apache2.conf

<Directory />
Header set Access-Control-Allow-Origin "*"
</Directory>

有可能解决这个问题吗?或者有没有其他方法如何读取xml文件?谢谢你的回复。

1 个答案:

答案 0 :(得分:0)

是的,也许我错误地使用Ajax,但它工作得很好。我的问题是烧瓶,因为我需要重新加载我的data.xml .....我才使用这个命令

@app.route('/data.xml')
    def data():    
return render_template('/data.xml')

现在我用

@app.route('/data.xml')
def data():
return send_from_directory("templates", "data.xml")

只有当我转到localhost / data.xml时才重新加载我的xml文件 还有其他命令吗?解决了我的问题。有些东西是按时间自动加载的。谢谢你的回复