这个是用 Jquery  读取XML 里面的数据 写入到 页面中      运行2 3 天没有问题 但是 时间一长 就会出现问题  每天晚上12点- 早晨8点  xml 是没有数据的  但是 程序会一直读取xml   报的错误如下:
   
                       当前页面的脚本发生错误
行: 133
Char: 3
错误: 'array[...]'为空或不是对象
代码: 0
URL: http://127.0.0.1/zjarr1.htm?
     Data:arr_1.xml+Start:0+MaxRow:10+Text:FreeText1.xml+NumPage:5var vtop;//每行距离顶部百分比
var bgcolor;//每行背景色
var url=location.href;
var rownum;//浏览器参数总 行数
var allsize;//数据总数
var array;//封装数组
var start;//从第几行开始
var pagesize;//一共显示多少页
var dataa;//请求数据xml
var text;
var values=url.split("?")[1];
var vava=values.split("+");
for(var i=0;i<vava.length;i++){
var value=vava[i];
var val=value.split(":")[0];
if(val=="Data"){
dataa=value.split(":")[1];
}else if(val=="NumPage"){
pagesize=((value.split(":")[1])*1);
}else if(val=="MaxRow"){
rownum=((value.split(":")[1])*1);
}else if(val=="Text"){
text=value.split(":")[1];
}else if(val=="Start"){
start=((value.split(":")[1])*1);
}
}
//画页面框架,设置样式
$().ready(function (){
drawFrame();
getData();
$("body").everyTime(22000,getData);
});
function drawFrame(){
for(var i=1;i<=rownum;i++){
if(i==1){
vtop=0;//表头高度
bgcolor="#000033";
}else{
vtop=vtop+100/rownum;
if(i%2==0){
bgcolor="#000099";
}else{
bgcolor="#000033";
}
}
$("#main").append("<div id=\"S-1-"+i+"\" class=\"logo"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt;height:"+(100/rownum)+"%;top:"+vtop+"%;left:0px;width:5%;background-color:"+bgcolor+"\"></div>"+
//航班号
"<div id=\"S-2-"+i+"\" class=\"no"+i+"\"  style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt; height:"+(100/rownum)+"%;top:"+vtop+"%;left: 5%;width:15%;background-color:"+bgcolor+"\" align='center'></div>"+
//  始发站/途经站 终点站 中文/英文
"<div id=\"S-3-"+i+"\" class=\"road"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt;height:"+(100/rownum)+"%;top:"+vtop+"%;left:20%;width:30%;background-color:"+bgcolor+"\"></div>"+
//计划时间
"<div id=\"S-4-"+i+"\" class=\"sdt"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt;height:"+(100/rownum)+"%;top:"+vtop+"%;left:50%;width:13%;background-color:"+bgcolor+"\" align='center'></div>"+
//变更时间
"<div id=\"S-5-"+i+"\" class=\"last_d"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt;height:"+(100/rownum)+"%;top:"+vtop+"%;left:63%;width:13%;background-color:"+bgcolor+"\" align='center'></div>"+
//行李
"<div id=\"S-6-"+i+"\" class=\"belt_"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bold;font-size:36pt;height:"+(100/rownum)+"%;top:"+vtop+"%;left:76%;width:5%;background-color:"+bgcolor+"\" align='center'></div>"+
//状态
"<div id=\"S-7-"+i+"\" class=\"status_"+i+"\" style=\"position:absolute;overflow:hidden;font-family: Arial;font-weight:bolder;font-size:25px;height:"+(100/rownum)+"%;top:"+vtop+"%;left:81%;width:19%;background-color:"+bgcolor+"\" align='left'></div>"
);
}
}
//动态获取航班数据
function getData(){
  $.ajax({
type: "GET", 
url: dataa,   //数据源
dataType: "xml",
success: function(data){
allsize=$(data).find("row").length;
array=new Array(allsize);
var i=0;
$(data).find("row").each(function(){
array[i]=$(this);
i++;
});
 if(array.length<=(start*1)){//如果数据为空
document.getElementById("mss").style.display="none";
document.getElementById("ms").style.display ="block";
}else if(array.length>(start*1)){//这是如果数据不为空的情况
document.getElementById("ms").style.display="none";
document.getElementById("mss").style.display="block";
display();
}else{alert("else");}
}

  });
   $.ajax({
type: "GET", 
url: text,   //数据源
dataType: "xml", 
success: function(data){
$(data).find("row").each(function(){
$("#bottom-main").html("<font color='#FFFFFF' size='8'><marquee>"+$(this).attr("TEXT_L1")+"    "+$(this).attr("TEXT_L2")+"</marquee></font>");
});
}

  });}//显示航班信息
var j=start;function display(){
for(var i=0;i<rownum;i++){
if(array.length<=(start*1)){//判断如果数据为空直接跳出循环 否则会出错
break;
}else if(j==((start*1)+(rownum*pagesize))){
j=start;
break;
}else if(j==allsize&&(array.length-start)==rownum){
j=start;
break;
}else if(j==allsize){
j=start;
for(var z=i;z<rownum;z++){
$("#S-1-"+(z+1)).html("");
$("#S-2-"+(z+1)).html("");
$("#S-3-"+(z+1)).html("");
$("#S-4-"+(z+1)).html("");
$("#S-5-"+(z+1)).html("");
$("#S-6-"+(z+1)).html("");
$("#S-7-"+(z+1)).html("");
}
break;
}else

                  // 就是以下 这一行 报的错误   var date=new Date(array[j].attr("SDT")*1000); 
var date2=new Date(array[j].attr("LAST_D")*1000);
d1(date);
d2(date2);
var time1=myHour+":"+myMinutes;
var time2=myHour2+":"+myMinutes2;
var viacn=array[j].attr("ROUTE_N_1_L");
var viaen=array[j].attr("ROUTE_N_1");
if(viacn==null){
viacn="";
viaen="";
}else{
viacn=array[j].attr("ROUTE_N_1_L");
viaen=array[j].attr("ROUTE_N_1");
}


var scn=array[j].attr("REMARK_L");
var sen=array[j].attr("REMARK");
if(scn==null){
scn="";
sen="";
}else{
scn=array[j].attr("REMARK_L");
sen=array[j].attr("REMARK");
} $("#S-1-"+(i+1)).html("<img src=\"./../Logo/logo_"+array[j].attr("CARRIER_IATA")+".jpg\" width='100%' height='100%' />");

if(array[j].attr("REMARK_L")=="延误"){
$("#S-2-"+(i+1)).html("<font color='yellow';>"+array[j].attr("FLIGHT")+"</font>");
$("#S-3-"+(i+1)).html("<font color='yellow';><marquee>"+array[j].attr("ORDEST_N_L")+"    "+array[j].attr("ORDEST_N")+"    "+viacn+"    "+viaen+"</marquee></font>");
$("#S-4-"+(i+1)).html("<font color='yellow';>"+time1+"</font>");
$("#S-5-"+(i+1)).html("<font color='yellow';>"+time2+"</font>");
$("#S-6-"+(i+1)).html("<font color='yellow';>"+""+"</font>");
$("#S-7-"+(i+1)).html("<font color='yellow';>"+scn+"    "+sen+"</font>");
}else if(array[j].attr("REMARK_L")=="到达"){
$("#S-2-"+(i+1)).html("<font color='green';>"+array[j].attr("FLIGHT")+"</font>");
$("#S-3-"+(i+1)).html("<font color='green';><marquee>"+array[j].attr("ORDEST_N_L")+"    "+array[j].attr("ORDEST_N")+"    "+viacn+"    "+viaen+"</marquee></font>");
$("#S-4-"+(i+1)).html("<font color='green';>"+time1+"</font>");
$("#S-5-"+(i+1)).html("<font color='green';>"+time2+"</font>");
$("#S-6-"+(i+1)).html("<font color='green';>"+""+"</font>");
$("#S-7-"+(i+1)).html("<font color='green';>"+scn+"    "+sen+"</font>");
}else if(array[j].attr("REMARK_L")=="正在值机"){
$("#S-2-"+(i+1)).html("<font color='blue';>"+array[j].attr("FLIGHT")+"</font>");
$("#S-3-"+(i+1)).html("<font color='blue';><marquee>"+array[j].attr("ORDEST_N_L")+"    "+array[j].attr("ORDEST_N")+"    "+viacn+"    "+viaen+"</marquee></font>");
$("#S-4-"+(i+1)).html("<font color='blue';>"+time1+"</font>");
$("#S-5-"+(i+1)).html("<font color='blue';>"+time2+"</font>");
$("#S-6-"+(i+1)).html("<font color='blue';>"+""+"</font>");
$("#S-7-"+(i+1)).html("<font color='blue';>"+scn+"    "+sen+"</font>");
}else if(array[j].attr("REMARK_L")=="航空管制"){
$("#S-2-"+(i+1)).html("<font color='red';>"+array[j].attr("FLIGHT")+"</font>");
$("#S-3-"+(i+1)).html("<font color='red';><marquee>"+array[j].attr("ORDEST_N_L")+"    "+array[j].attr("ORDEST_N")+"    "+viacn+"    "+viaen+"</marquee></font>");
$("#S-4-"+(i+1)).html("<font color='red';>"+time1+"</font>");
$("#S-5-"+(i+1)).html("<font color='red';>"+time2+"</font>");
$("#S-6-"+(i+1)).html("<font color='red';>"+""+"</font>");
$("#S-7-"+(i+1)).html("<font color='red';>"+scn+"    "+sen+"</font>");
}
else{
$("#S-2-"+(i+1)).html("<font color='#FFFFFF';>"+array[j].attr("FLIGHT")+"</font>");
$("#S-3-"+(i+1)).html("<font color='#FFFFFF';><marquee>"+array[j].attr("ORDEST_N_L")+"    "+array[j].attr("ORDEST_N")+"    "+viacn+"    "+viaen+"</marquee></font>");
$("#S-4-"+(i+1)).html("<font color='#FFFFFF';>"+time1+"</font>");
$("#S-5-"+(i+1)).html("<font color='#FFFFFF';>"+time2+"</font>");
$("#S-6-"+(i+1)).html("<font color='#FFFFFF';>"+""+"</font>");
$("#S-7-"+(i+1)).html("<font color='#FFFFFF';>"+scn+"    "+sen+"</font>");
} j++;
}

}
var myMinutes = "";
var myMinutes2 = "";
function d1(date){
if ((date.getHours() >= 0) && (date.getHours() <= 9))
myHour = "0" + date.getHours();
  else
myHour = date.getHours();

  if ((date.getMinutes() >= 0) && (date.getMinutes() <= 9))
myMinutes = "0" + date.getMinutes();
  else
myMinutes = date.getMinutes();
}
function d2(date2){
if ((date2.getHours() >= 0) && (date2.getHours() <= 9))
myHour2 = "0" + date2.getHours();
  else
myHour2 = date2.getHours();

    if ((date2.getMinutes() >= 0) && (date2.getMinutes() <= 9))
myMinutes2 = "0" + date2.getMinutes();
  else
myMinutes2 = date2.getMinutes();
}

解决方案 »

  1.   

    什么else后面是不是少了个 “{”
      

  2.   

    // 动态获取航班数据
    function getData(){
      $.ajax({
                type: "GET", 
                url: dataa,   // 数据源
                dataType: "xml",
                success: function(data){
                    allsize=$(data).find("row").length; //你把这个打出来看是什么?
                    array=new Array(allsize);//这句话有问题 
                    var i=0;
                    $(data).find("row").each(function(){
                        array[i]=$(this);
                        i++;
                    });
                     if(array.length<=(start*1)){// 如果数据为空
                        document.getElementById("mss").style.display="none";
                        document.getElementById("ms").style.display ="block";
                    }else if(array.length>(start*1)){// 这是如果数据不为空的情况
                        document.getElementById("ms").style.display="none";
                        document.getElementById("mss").style.display="block";
                        display();
                    }else{alert("else");}
                }
                
      });
      

  3.   

    调用display()函数的时候start变量不一定存在吧。在报错行前面加上一行alert(start)或者alert(j)看看此时j变量有没有值。
      

  4.   


    第二个那里出错误了?  也不是少括号的原因alert(start) alert(j)我都试过了 每一次刷新的时候 都会有值 
      

  5.   


    function display(){
        for(var i=0;i<rownum;i++){
            if(array.length<=(start*1)){//判断如果数据为空直接跳出循环 否则会出错
                break;
            }else if(j==((start*1)+(rownum*pagesize))){
                j=start;
                break;
            }else if(j==allsize&&(array.length-start)==rownum){
                j=start;
                break;
            }else if(j==allsize){
                j=start;
                for(var z=i;z<rownum;z++){
                    $("#S-1-"+(z+1)).html("");        
                    $("#S-2-"+(z+1)).html("");    
                    $("#S-3-"+(z+1)).html("");    
                    $("#S-4-"+(z+1)).html("");    
                    $("#S-5-"+(z+1)).html("");
                    $("#S-6-"+(z+1)).html("");
                    $("#S-7-"+(z+1)).html("");
                }
                break;
            }else           // 少了 { 
            
                      // 就是以下 这一行 报的错误          var date=new Date(array[j].attr("SDT")*1000); 
      

  6.   

    arr=arr.length>-1&&typeof arr == 'object'||[];