我的观点发生了一些奇怪的事情。 我将Json结果返回到我的视图以显示有关ajax调用的数据。 如果我的data.length == 0
,我试图显示一条小信息此数据无可用数据
此外我正在使用$ .blockUI(说请等待),当我的data.length = 0时,我的页面仍然说等待...多年,当我在firefox中运行时,我收到了消息
此页面上的脚本可能正忙,或者可能已停止响应
<script type="text/javascript">
//<![CDATA[
$("#GetReport").click(function () {
$.blockUI({
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
$.ajax({
type: "POST",
url: theUrl,
data: { 'manufacturer': manufacturer, 'country': country, 'category': category, 'startDate': startDate, 'endDate': endDate, 'chartType': chartType },
dataType: "json",
success: function (data) {
//setTimeout($.unblockUI, 5);
var retailerNameArray = [];
var clicksArray = [];
var weekNoArray = [];
var rowTotalArray = [];
var weekArray = [];
var columnTotalArray = [];
var cumTotalArray = [];
var weekCounterArray = [];
var overallClickCountArray = [];
var resellerShareArray = [];
var retailerCount = 0;
//we want to include total in the chart
var weekNoArrayIncTotal = [];
var retailerNameArrayIncTotal = [];
var clicksArrayIncTotal = [];
var totalWeekCounter;
var weekNumberIncTotal = 0;
var counter = 1;
//if there is no data we do not want to display the graph etc
if (data.length == 0) {
$('#noData').show();
$('#chartContainer').hide();
$('#tableContainer').hide();
$('.exportData').hide();
}
//we need to add one more because of total but then 0 it
for (var i = 0; i < data.length; i++) {
var cumLeadrow = data[i];
// var y = 1;
//Only display on graph if not 0
}
});
});
//]]>
没有数据可用于指定的标准
一如既往,我们将非常感谢任何帮助。
答案 0 :(得分:2)
如果data.length - l
或data.length - cc
小于0,则您的脚本将永久运行。
当您发布完整代码时,您有一组while循环,如下面的
while (typeof weekCounterArray[data.length - l] == 'undefined') {
l++
}
如果data.length - l < 0
那么它将保持为负数,任何带负数的数组都会产生undefined
,这将导致循环永远地运行(实际上因为它会在某些时候下溢并且会得到如果某个点存在,则返回有效范围)
这种情况会发生在两种不同的情况下,最有可能的是data.length == 0
,因为l
被初始化为1
,这将导致负指数。另一种不太可能的情况是,您正在编制索引的数组具有从索引0
到索引data.length-1
的未定义值。 [undefined,undefined,1,2,3,4]
会导致data.length == 2