【问题标题】:Passing a parameter of type List to Javascript function将 List 类型的参数传递给 Javascript 函数
【发布时间】:2014-07-18 17:34:43
【问题描述】:

在我看来,我有一个函数,它需要调用一个列表,以便在其中执行 ajax 调用。我正在使用的 API 在其参数中有一个参数 List<>。这就是我需要它的原因。

是否可以将List<> 类型的参数传递给Javascript 函数?如果是,使用什么合适的语法?我google了一下,还没有找到答案。

编辑:这是我的代码

Javascript 函数:

    function DeleteRoom(RoomId, FloorId, userDevicesID) {
        $.ajax({
            beforeSend: function (xhr) {
                xhr.setRequestHeader('verifySession', verifySession());
                xhr.setRequestHeader('Authorization', '@HttpContext.Current.Session["BaseAuth"]');
            },
            url: "/api/Room/RemoveRoom?RoomId=" + RoomId + "&userDevicesId="+ userDevicesID,
            type: "DELETE",
            dataType: 'json',
            success: function (data) {
                // removing items from the view
            }
        });
    }

调用使用该函数的弹窗:

     arr.push(existingdevices[i].attrs.id); //array of IDs, can be empty
     PopUpDeleteRoom(id, FloorId, arr);

API:

    [HttpDelete]
    public void RemoveRoom(int roomId, [FromUri]List<int> userDevicesId)
    {
        int currentUserId = SessionData.CurrentUser.UserID;
        List<Equipment> equipmentsAssociated = equipmentRepository.FindMany(e => e.RoomID == roomId).ToList();
        foreach (Equipment equipment in equipmentsAssociated)
        {
            equipment.RoomID = null;
            equipmentRepository.Update(equipment);
            equipmentDeviceRepository.DeleteAllEquipmentDeviceOfZwave(equipment.EquipmentID);
        }
        foreach (int userDeviceId in userDevicesId)
        {
            userDeviceRepository.Delete(userDeviceId); 
            //this generates a NullReferenceException that I will fix later
        }
        equipmentRepository.Save();
        userDeviceRepository.Save();
        roomRepository.Delete(roomId);
        roomRepository.Save();
    }

请问有解决这个问题的办法吗?

【问题讨论】:

  • List 或 JSON,如果您打印您说的列表?会有用的
  • 这是我将传递给函数的整数 (ID) 列表,该函数是关于使用 API 通过它们的 ID 删除这些实例。
  • “列表”是指Live/ Static Nodelist or Array吗?这很重要,因为两者的方法不同
  • 好吧,我现在很困惑。我为我的 API 使用了一个列表,为 js 函数使用了一个数组。请查看编辑,我认为我的代码搞砸了太多
  • javaScript 中没有 List 类型。要么有数组,要么有对象(我的意思是{ })。但是要将其中任何一个作为参数发送,我建议您使用 jQuery $.ajax 函数中提供的 data: 选项

标签: javascript list


【解决方案1】:

我假设在您的 javascript 中,List&lt;&gt;Array

如果是这样,你可以用它做各种事情:http://www.w3schools.com/js/js_arrays.asp

示例(调用此函数将为数组中的每个元素显示警报):

var alertAllElements = function (theArray) {
    for(var x=0; x<theArray.length; x++)
        alert(theArray[x]);
};

【讨论】:

  • 我可以将此 Array 参数作为参数传递给我在 ajax 调用中使用的函数内部的 API 吗?这个 API 需要一个 List 类型的参数(正如它在控制器中的描述)。这就是我需要的。
  • 如果不知道 API 是什么就不可能说出来,因为我们不知道它的实现是如何工作的。如果您显示您的代码并说明您正在调用的实际 API 会更容易。