Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Javascript读取XML文件_Javascript_Xml_Apache_Flask - Fatal编程技术网

用Javascript读取XML文件

用Javascript读取XML文件,javascript,xml,apache,flask,Javascript,Xml,Apache,Flask,我用Flask创建了web应用程序。我通过javascript从xml文件中读取数据。它的运行非常出色,但当我在apache上部署flask应用程序时,我在读取当前数据方面遇到了问题。如果我在apache上更改xml文件中的一些数据,我只能看到旧数据。什么也没发生。只有当我重新启动apache服务器时,网页上的数据才会更改。怎么了?我尝试了许多可能的方法来解析XML数据,例如ajax function ReadTemperatureFromxXML() { var xmlDoc;

我用Flask创建了web应用程序。我通过javascript从xml文件中读取数据。它的运行非常出色,但当我在apache上部署flask应用程序时,我在读取当前数据方面遇到了问题。如果我在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')
   }
通过我的web浏览器,我查看了网络,可以看到xml文件的要求。 控制台的错误列表与错误日志文件apache相同。 我尝试这样更改apache2.conf

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

标题集访问控制允许原点“*”

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

是的,也许我没有正确地使用Ajax,但它工作得很好。我的问题在flask中,因为我需要重新加载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文件
还有其他命令吗?解决了我的问题。一些时间自动记录的东西。感谢您的回复

您没有正确使用AJAX,您必须在访问响应时等待响应
var xmlDoc=xmlhttp.responseXML
xmlhttp.responseXML
未定义。您可以从中了解更多关于AJAX的信息
@app.route('/data.xml')
    def data():    
return render_template('/data.xml')
@app.route('/data.xml')
def data():
return send_from_directory("templates", "data.xml")