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 中的“索引超出范围”错误