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

时间:2015-05-14 05:47:11

标签: javascript c# jquery asp.net ajax

我有一个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);
    }
});

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

让我说我修改我的数据对象看起来像这样:

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.....)

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情。您可能需要操纵内容类型。

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);
  }
});

答案 1 :(得分:0)

您无法将文件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
            }
        });