javascript - jQuery AJAX 函数调用多次,但仅在第一次调用时提取数据

标签 javascript jquery ajax xml

我有一个 jQuery 函数,用于从 Flask 服务器上的 XML 文件中提取数据。我通过调用此函数来启动我的就绪函数,并且所有变量都会更新,没有任何问题。但是,当我通过单击操作第二次调用该函数时,我的变量不会更新。我知道 AJAX 函数已成功调用,因为我收到了警报。看起来 XML 文档在第一次调用后没有被重新加载。如何让我的变量在每次调用该函数时更新。

全局变量

//Variables representing Sensor Data
var bspeed=0;
var set_temp=0;
var f_temp=0;
var fuel_level=0;
var s_temp=0;
var humidity=0;
var bspeed_data=0;
var set_temp=0;
var mode = "mod";
var mod_mode = "blower";

数据拉取功能

//AJAX XML file parsing
function pull_data(){

//Gather Data from main.xml and store into variables
$.ajax({
    type: "GET",
    url: "static/main.xml",
    async: false,
    success: function(xml){
        $(xml).find('item').each(function(){
            var id = $(this).find('id').text();
            switch(id){
                case "ftemp_data":
                    f_temp = $(this).find('value').text();
                    break;
                case "stemp_data":
                    s_temp = $(this).find('value').text();
                    break;
                case "fuel_level_data":
                    fuel_level = $(this).find('value').text();
                    break;
                case "humidity_data":
                    humidity = $(this).find('value').text();
                    break;
                case "blower_speed":
                    alert("Changing bspeed");
                    bspeed_data = $(this).find('value').text();
            }
        });
        alert("Pull Success "+ bspeed_data);
    },
    error: function(data){
        alert("AJAX failed: "+ data.status + ' ' + data.statusText);
    }
});

//Populate HTML with variables
$("#ftemp_data").text(f_temp+("\u00B0"));
$("#stemp_data").text(s_temp+("\u00B0"));
$("#fuel_level_data").text(fuel_level+"%");
$("#humidity_data").text(humidity+"%");
$("#bspeed_data").text(bspeed_data);
}

就绪函数(简化)

$(document).ready(function(){
    pull_data();
    //Click Refresh Button
    $("#refresh_btn").click(function(){
        pull_data();
    }); 
}

我对网络开发相当陌生,所以请随意指出我正在做的事情的结构性问题。

最佳答案

可能你需要强制刷新缓存,为此,在ajax代码中添加属性cache: false:

$.ajax({
    type: "GET",
    url: "static/main.xml",
    async: false,
    cache: false,...

您可以查看Jquery Ajax documentation

关于javascript - jQuery AJAX 函数调用多次,但仅在第一次调用时提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37042580/

相关文章:

javascript - jquery-ui : detect first time change in input

javascript - Accordion 呈现但没有响应

ajax - onreadystatechange 函数如何工作?

php - Ajax 表单验证 Php 插入查询

javascript - 如何识别第 3 方 iframe 中的 Ajax 更新

c# - 单击时将参数传递到 ASP.Net Button 控件

javascript - 组件中的异步计算 - VueJS?

javascript - Divs show() 在不同的时间,但相关的 CSS 动画都在相同的时间轴上运行。适用于 Chrome 和 IE,不适用于 FF

java - 创建具有定义颜色的 JQuery-Sprites

javascript - 区域扩大时改变图像