脚本失去控制

时间:2013-11-12 09:24:47

标签: javascript asp.net-mvc jquery

我的观点发生了一些奇怪的事情。 我将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

        }
    });

});

//]]>

                        没有数据可用于指定的标准             

一如既往,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

如果data.length - ldata.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

几乎无限循环