错误'length'为null或不是对象

时间:2010-07-02 18:22:46

标签: asp.net-ajax

我有一个使用ASP.NET AJAX的ASP.NET Web应用程序。该应用程序给我以下随机javascript错误

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; CIBA; .NET4.0C; .NET4.0E)
Timestamp: Fri, 2 Jul 2010 17:19:22 UTC


Message: 'length' is null or not an object
Line: 5
Char: 18997
Code: 0
URI: http://172.16.199.109/TWQAUDTUK_App/ScriptResource.axd?d=BssYA8UXb_xixM2kbWCVNiQB3yadiDxpyviVKlvm-OzfLO5PAqndPHn02Na1YNGeyuN9FBDbUO716zVqct-04yJjJTi77-kEQQ_jKSRCUY81&t=5dc69638

我收到错误的地方是在MicrosoftAjax.js

Array.indexOf = function Array$indexOf(array, item, start) {
    /// <param name="array" type="Array" elementMayBeNull="true"></param>
    /// <param name="item" optional="true" mayBeNull="true"></param>
    /// <param name="start" optional="true" mayBeNull="true"></param>
    /// <returns type="Number"></returns>
    var e = Function._validateParams(arguments, [
        {name: "array", type: Array, elementMayBeNull: true},
        {name: "item", mayBeNull: true, optional: true},
        {name: "start", mayBeNull: true, optional: true}
    ]);
    if (e) throw e;

    if (typeof(item) === "undefined") return -1;
    var length = array.length;
    if (length !== 0) {
                start = start - 0;
                if (isNaN(start)) {
            start = 0;
        }
        else {
                                    if (isFinite(start)) {
                                start = start - (start % 1);
            }
                        if (start < 0) {
                start = Math.max(0, length + start);
            }
        }

                for (var i = start; i < length; i++) {
            if ((typeof(array[i]) !== "undefined") && (array[i] === item)) {
                return i;
            }
        }
    }
    return -1;
}

如何解决此问题?

3 个答案:

答案 0 :(得分:1)

您的数组参数必须为null

答案 1 :(得分:1)

也许正在调用函数,“array”为null。您没有在此行之前检查“array”是否为null:

var length = array.length;

[编辑:第二个想法,我认为这是错误的;我想你会得到关于“数组”本身的错误,而不是“长度”。]

也可能是“数组”实际上不是一个数组,所以在“数组”传递的任何内容上都没有“length”属性。

答案 2 :(得分:0)

感谢您的快速回复。让我在这里提供更多信息。 MicrosoftAjax.js是Microsoft ASP.NET AJAX框架的一部分。我知道数组参数有问题,但AJAX过程全部由ASP.NET AJAX框架生成。我不知道如何使用故障点来跟踪我的代码以找到问题。另一方面,问题是非常随机,我只是偶尔得到它。