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

Javascript 如何将文件与其他字段一起发送';s数据到webmethod是asp.net使用jquery ajax调用的吗?,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我有一个网络表单,它有x个文本框和y个下拉列表等 我正在使用以下代码向服务器上的webmethod发送数据: $.ajax({ type: "POST", url: "SupplierMaster.aspx/RegisterSupplier", data: JSON.stringify({ id: $('#txtbidderid').val(), bidamt: $('#txtbidamt').val() }), conte

我有一个网络表单,它有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
方法的
数据:
? 我不想使用外部插件等,除非绝对必要

假设我修改我的数据对象,使其如下所示:

var dataToSend = {};
dataToSend.id = $('#txtbidderid').val()
dataToSend.bidamt = $('#txtbidamt').val()
dataToSend.append( 'file', input.files[0] );
webmethod armument会是什么样子? 例如,假设它现在看起来是这样的:
[WebMethod]公共静态字符串SubmitBid(字符串id,字符串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
            }
        });

webmethod中的参数类型是什么?例如,现在它看起来像:`[WebMethod]公共静态字符串SubmitBid(字符串id,字符串bidamt…)`试试这个,
[WebMethod]公共静态字符串SubmitBid(字符串id,字符串bidamt,HttpPostedFile文件)
。如果您对此有问题,则可以使用
context.request从请求
context
中提取文件。文件似乎不起作用。我无法调用webmethod本身。webmethod中的参数类型是什么?例如,现在它看起来像:`[WebMethod]public static string SubmitBid(string id,string bidamt…)`我有一个更新的问题