我正在尝试发出异步请求以从我的服务器获取一些数据。这一切在Firefox中运行良好,但在Internet Explorer中,在收到任何数据之前立即调用回调。
$.ajax({
url: "charts.php",
data: { site: site, start: toDateString(start), end: toDateString(end) },
cache: false,
dataType: "json",
success:
function(data) {
var dataPoints = [];
if(data.length == 0){
$("#error").children("label").eq(0).html("There were no results for the site and range selected.");
if($("#error").css("display") == "none"){
$("#error").toggle();
}
$("#large-loader").toggle();
return false;
}
//add each pair of time/maxcalls to an array
$.each(data, function(i, item){
var minute = item[0];
dataPoints.push({
label: pad(parseInt(minute / 60)) + ":" + pad((minute%60)),
data: [minute, item[1]]
});
});
var options = {
xaxis : {
ticks : 24,
tickSize: 60
},
legend : {
show: true,
margin: 10,
backgroundOpacity: .3
},
grid: {
hoverable: true
}
};
//hide loader, show chart
$("#large-loader").toggle();
$("#chart-container").toggle();
$.plot($("#chart"), [data], options);
}
});
答案 0 :(得分:0)
数组存在length属性,但对于对象则不存在。例如,在您的firebug控制台中,您可以输入:
var a={'a':'e','b':'c'};
a.length==undefined;//true
然后用数组尝试:
var a=['a', 'b','c','d'];
a.length;//4
<小时/> 在回复评论时: 您应该可以毫无问题地对空对象执行
$.each
。你可以保留一个计数器,例如
var resultCount=0;
$.each(data, function(i, item){
resultCount++;
//...
});
if(resultCount == 0){
//error
return false;
}
话虽如此,我不确定这是否真的是你的问题(但要检查,因为它可能是)。您是否在IE中尝试过alert
data
?有时您只需继续移动警报,直到找到问题为止。