如何使用 jquery ajax 调用将文件与其他字段的数据一起发送到 webmethod asp.net?



我有一个webform,它有x个文本框和y个下拉列表等我正在使用此代码将数据发送到服务器上的webmethod:

$.ajax({
type: "POST",
url: "SupplierMaster.aspx/RegisterSupplier",
data: JSON.stringify({
id: $('#txtbidderid').val(),
bidamt: $('#txtbidamt').val()
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function (data, status) {
alert(data.d);
},
failure: function (data) {
alert(data.d);
},
error: function (data) {
alert(data.d);
}
});

现在的问题是,我还想在这个表单上包含文件附件。如何将文件添加到$.ajax方法的data:?除非绝对必要,否则我不想使用外部插件等。

比方说,我修改我的数据对象如下:

var dataToSend = {};
dataToSend.id = $('#txtbidderid').val()
dataToSend.bidamt = $('#txtbidamt').val()
dataToSend.append( 'file', input.files[0] );

webmethod armument会是什么样子?例如,让我们假设它现在看起来是这样的:[WebMethod] public static string SubmitBid(string id, string bidamt.....)

您可以尝试这样的方法。您可能需要操作内容类型。

var dataToSend = new FormData();    
dataToSend.append( 'file', input.files[0] );
$.ajax({
url: "SupplierMaster.aspx/RegisterSupplier",
data: dataToSend,
processData: false,
contentType: false,
type: 'POST',
success: function(data){
alert(data);
}
});

您无法将文件作为application/json; charset=utf-8发送到服务器,因此我建议您使用application/x-www-form-urlencoded作为contentType,也使用data作为FormData,如下所示。

$.ajax({
url: "SupplierMaster.aspx/RegisterSupplier",
type: 'POST',
data: new FormData(formElement),//Give your form element here
contentType: false,
processData: false,
success: function () {
//do success
}
});

最新更新