2010-07-02 70 views
0

我有一个使用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; 
} 

如何解决这个问题?

回答

1

你的数组参数必须为空

1

也许函数被调用的时候“array”为null。你不检查在这一行之前“array”是否为空:

var length = array.length; 

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

也可能是因为“数组”不是真正的数组,所以没有任何“长度” “阵列”。

0

感谢您的快速响应。让我在这里提供更多信息。 MicrosoftAjax.js是Microsoft ASP.NET AJAX框架的一部分。我知道数组参数有问题,但AJAX过程全部由ASP.NET AJAX框架生成。我不知道如何使用失败点来追踪我的代码以找到问题。另一方面,问题非常随意,我只有一段时间。

+0

您可以也确实应该编辑您的问题以提供此额外信息,而不是将其作为答案发布。 – ChrisF 2010-07-02 18:42:29

+0

对不起,我对Stack Overflow不是很熟悉。在其他讨论组中,我通常只是在其他人的帖子后发布一些内容以提供更多信息,因此他们会知道这是一条新信息。如果我编辑我的原始问题,如何让他们知道这是附加信息?谢谢。 – hehongyu2000 2010-07-02 19:05:56

相关问题