javascript - 来自 PHP 的最新 XML 文件响应未加载到 Javascript 中

标签 javascript php ajax xml

我正在尝试借助谷歌图表可视化一些数据。我使用 AJAX-PHP 调用从服务器检索数据。 PHP 文件被编码为写入一个 XML 文件,该文件又被解析并作为数据传递到 google 图表。我面临的问题是,图表没有刷新,但服务器中的 XML 文件每次运行都会刷新。但如果我使用调试器,一切都会按预期进行。我知道这是由于异步调用造成的,但我无法解决它。即使我尝试使用 async = false 但没有用。

当按下提取按钮时,将调用以下函数:

function callforXML(FrDate, ToDate)
{
ajax_page = 'RetrieveData.php';
$.ajax({
type: "GET",
url: ajax_page,
cache: false,
dataType: "text/html",
data: "fdate=" + FrDate + "&tdate=" + ToDate,
success: loadXMLDocintoArray,       
error: function(e)
{
alert("Connection to server is interrupted!");
}
});
}

function loadXMLDocintoArray()
{
var xmlhttp;
var x,xx,i;
var ondateXML, swiftXML, manualXML;


var appName = $("#applicationName :selected").text();
var selInterval = $("#interval :selected").text();

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}


xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{           
x=xmlhttp.responseXML.documentElement.getElementsByTagName("tcount");
var data = new google.visualization.DataTable();

// Declare columns
data.addColumn('string', 'Ticket Date');
data.addColumn('number', 'Swift');
data.addColumn('number', 'Manual');
for (i=0;i<x.length;i++)
{                               
xx=x[i].getElementsByTagName("ondate");
ondateXML = xx[0].firstChild.nodeValue;

xx=x[i].getElementsByTagName("scount");
swiftXML = xx[0].firstChild.nodeValue;

xx=x[i].getElementsByTagName("mcount");
manualXML = xx[0].firstChild.nodeValue;

data.addRows([[ondateXML,parseInt(swiftXML),parseInt(manualXML)]]);
}
var options = {
title: selInterval + ' Report for ' + appName,
width: 700,
height: 1200,
legend: { position: 'none' },
chart: { title: selInterval + ' Report for ' + appName,
subtitle: ' ' },
bars: 'vertical', // Required for Material Bar Charts.
axes: {
x: {
0: { side: 'top', label: ' '} }
},
bar: { groupWidth: "90%" },
animation:{
duration: 1000,
easing: 'out'}
};

var chart = new google.charts.Bar(document.getElementById('Chart_Div'));
chart.draw(data, options);                      
}
}

xmlhttp.open("GET","/XML/TicketCount.xml",false);
xmlhttp.send();
}

最佳答案

success 回调函数获取 ajax 调用返回的数据,而您并未传递该数据。

您可能想要更像的东西

success: function(xml) { loadXMLDocIntoArray(xml); }
function loadXMLDocIntoArray(xml) {
   ... do stuff with 'xml' argument
}

关于javascript - 来自 PHP 的最新 XML 文件响应未加载到 Javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432831/

相关文章:

javascript - 在 HTML 或 JavaScript 中设置自定义 userAgent

php - search.php 页面返回错误

javascript - Chrome 39 错误 - 输入 select() 中断滚动

javascript - 根据状态更改 JSON HTML 表格单元格颜色

php - 数据库错误 "Field X doesn' t have a default value”是什么意思?

javascript - POSTing 数据后显示动态创建的 php 图像

jquery - 关闭创建的 jQuery 元素

javascript - JSON 对象 -> 数组?我应该如何转换它?

javascript - 更改此隐藏/展开脚本以实现可访问性

javascript - 有什么方法可以确定变量是否包含 MooTools 类实例