javascript数组中的索引超出范围

Posted

技术标签:

【中文标题】javascript数组中的索引超出范围【英文标题】:Index out of range in javascript array 【发布时间】:2021-10-07 08:04:25 【问题描述】:

我正在尝试在 javascript 中创建一个数组,其中包含作为模型传递给视图的对象列表,但我收到此错误:“System.ArgumentOutOfRangeException: Index was out of range. must be non-negative并且小于集合的大小。(参数'startIndex')“尝试打开视图时。这是我的代码:

<script language="JavaScript">
(function ()        
    var currentExpression;
    var expressionName;
    var role;
    
    function startup() 
    //Here, the initial expression
        counter = 0;
        exp = Array.from(@Model);

        currentExpression = document.getElementById('expresionImage');
        currentExpression.src = "~/Plugins/Widgets.Expressions/Content/Expressions/sample-expressions/" + exp[counter].ExpressionFileName;
        expressionName = document.getElementById('expressionName');
        expressionName.innerhtml = exp[counter].ExpressionName;
        role = exp[counter].Role;
   
  //==================================
    //Code here...      
   
    $(document).ready(function () 
        $("#AjaxForm").submit(function (e) 
            e.preventDefault();

            // More code...

            $.ajax(
                type: "post",  // Verbo HTTP
                url: "@Url.Action("TakePhoto", "WidgetsExpressions")",
                dataType: "application/Json",
                headers:  "RequestVerificationToken": $('input[name="__RequestVerificationToken: "]').val() ,
                data: JSON.stringify(
                    
                    // Datos / Parámetros
                        ProductId: $("#productId").val(),
                        Role: role, 
                        ExpressionName: expressionName,                           
                    ),
                contentType: "application/Json; charset=utf-8"
                )
                .done(function (result)                              
                        counter = ++counter;
                       
                        //Cambiamos la expression
                        currentExpression.src = "~/Plugins/Widgets.Expressions/Content/Expressions/sample-expressions/" + exp[counter].ExpressionFileName;
                        expressionName = exp[counter].ExpressionName;
                        role = exp[counter].Role;

                        // Mostramos un mensaje de éxito.
                        //$("#SuccessAlert").show("slow").delay(2000).hide("slow");
                        alert(result.Message);
                    
                    else
                    //Aqui va el Alert que indica que no se pudo procesar la foto. La expresion sigue igual.
                    alert(result.Message);
                    
                )
                // Se ejecuta si se produjo un error.
                .fail(function (xhr, status, error) 
                    // Mostramos un mensaje de error.
                    $("#ErrorAlert").show("slow").delay(2000).hide("slow");
                   
                )
                // Hacer algo siempre, haya sido exitosa o no.
                .always(function () 

                );
            );
        );

    //=====================================
    window.addEventListener('load', startup, false);
)();

对不起。这可能是一个愚蠢的问题,但我只是从 javascript 开始,无法弄清楚我的错误是什么。 谢谢

【问题讨论】:

这是一个 C# 错误,而不是 JavaScript 错误。 可能相关:What is the difference between client-side and server-side programming? 您也必须显示拍照操作代码 【参考方案1】:

感谢您的回复。问题是模型必须在将其转换为数组之前进行序列化。我就是这样解决的:

 var expModel = @Json.Serialize(Model); 
        exp = Array.from(expModel);

【讨论】:

以上是关于javascript数组中的索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章

数组中的下一个和索引超出范围

数据源数组正确时 UICollectionView 中的“索引超出范围”错误

致命错误:TableView 中的数组索引超出范围

使用 insertRowsAtIndexPaths 时空数组的索引超出范围

如果数组索引超出范围,则尝试抛出范围错误(C++)

从firebase删除时数组索引超出范围