jquery ajax 调用 asp.net 的多个参数

Multiple parameters on jquery ajax call asp.net

我试图在 ajax 调用中传递两个参数。我已经尝试了 StakeOverflow 上建议的几种方法,但 none 奏效了。这是我在控制器上的方法签名:

[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase[] files, string[] usersToShare)

这是我的函数:

function uploadFile() {
        var formData = new FormData();
        var totalFiles = document.getElementById("files").files.length;

        for (var i = 0; i < totalFiles; i++) {
            var file = document.getElementById("files").files[i];
            formData.append("files", file);
        }

        //get the selected usernames (email) to share the file
        var selectedUsers = [];
        $("#costumerUsersListSelect :selected").each(function () {
            selectedUsers.push($(this).val());
        });

        $.ajax({
            type: 'post',
            url: '/ManageFiles/UploadFile', 
            data: "files=" + formData + "usersToShare=" + selectedUsers,
            dataType: 'json',
            contentType: false,
            processData: false,
            success: function (data) {                    
            },
            error: function (error) {                  
            }
        });
    }

所以我想将 formDataselectedUsers 传递给控制器​​。如果我只传递 formData (Data: formData) 一切正常,但我也需要传递 selectedUsers。

这是我已经尝试过但没有成功的方法:

data: JSON.stringify({ files: formData, usersToShare: selectedUsers }),
data: { files: formData, usersToShare: JSON.stringify(selectedUsers)},
data: "files=" + formData + "&usersToShare=" + selectedUsers,
data: "files=" + formData + "usersToShare=" + selectedUsers,

我不确定这是否是语法问题。

在此先感谢您的帮助。

而不是:

data: "files=" + formData + "usersToShare=" + selectedUsers,

formData 中附加 selectedUsers 并仅将 formData 发送到服务器,例如:

data: formData, 

然后重试。

您需要为附加到 formData 的每个值使用不同的键,然后以相同的方式附加文件和用户

function uploadFile() {
  var formData   = new FormData();
  var allFiles   = $("#files").get(0).files;

  for (var i = 0; i < allFiles.length; i++) {
    formData.append("files_" + i, allFiles[i]);
  }

  $("#costumerUsersListSelect :selected").each(function(_,i) {
    formData.append('user_' + i, this.value);
  });

  $.ajax({
    type: 'post',
    url: '/ManageFiles/UploadFile',
    data: formData,
    dataType: 'json',
    contentType: false,
    processData: false,
    success: function(data) {},
    error: function(error) {}
  });
}

在你的 ajax:

data: JSON.stringify(obj);

在您的 ajax 语句之前,定义您的参数,例如:

var obj = { files: formData , usersToShare: selectedUsers };