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

Posted

技术标签:

【中文标题】jquery ajax调用asp.net上的多个参数【英文标题】:Multiple parameters on jquery ajax call asp.net 【发布时间】:2017-12-13 07:28:17 【问题描述】:

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

[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,

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

提前感谢您的帮助。

【问题讨论】:

在你的代码后面进入模型文件夹创建一个对象来请求并使用它 【参考方案1】:

代替:

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

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

data: formData, 

然后再试一次。

【讨论】:

【参考方案2】:

您需要为附加到 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) 
  );

【讨论】:

谢谢,你救了我!【参考方案3】:

在你的 ajax 中:

data: JSON.stringify(obj);

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

var obj = files: formData , usersToShare: selectedUsers ;

【讨论】:

以上是关于jquery ajax调用asp.net上的多个参数的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET中JQuery+AJAX调用后台

使用 JQuery $.AJAX 调用调用 ASP.NET 函数

Jquery Ajax调用asp.net后台方法

如何使用 jQuery 和 ASP.NET MVC 从 AJAX 调用返回错误消息?

JQuery ajax调用asp.net的webMethod

如何使用 jQuery AJAX 调用 ASP.Net 字符串函数?