С моим взглядом происходит что-то странное. Я возвращаю результат 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
}
});
});
//]]>
Нет данных для указанных критериев
Как всегда, любая помощь была бы высоко оценена.
если либо 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
})
а в обработчике успеха отсутствует a}
а в вашем обработчике кликов также отсутствует}