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) {
}
});
}
所以我想将 formData 和 selectedUsers 传递给控制器。如果我只传递 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 };
我试图在 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) {
}
});
}
所以我想将 formData 和 selectedUsers 传递给控制器。如果我只传递 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 };