如何使用jquery ajax调用将texbox和附件发送到webmethod?

时间:2015-05-14 06:40:00

标签: javascript c# jquery asp.net ajax

我正在尝试将文本框和输入文件数据发送到我的webmethod。我一直在谷歌上搜索相当一段时间,但仍不确定如何实现这一目标:

Jquery / AJAX CALL:

 var dataToSend = new FormData();           
 dataToSend.append('file',  document.getElementById("myFile").value);
 dataToSend.append('text',  document.getElementById("biddername").value);

            $.ajax({
                type: "POST",
                url: "SupplierMaster.aspx/RegisterSupplier",
                data: dataToSend,
                processData: false,
                contentType: false,
                dataType: false,
                async: true,
                success: function (data, status) {
                    console.log("CallWM");
                    alert(data.d);
                },
                failure: function (data) {
                    alert(data.d);
                },
                error: function (data) {
                    alert(data.d);
                }
            });

        }

的WebMethod:

 [WebMethod]
    public static string RegisterSupplier(HttpPostedFile file, string biddername)
    {

        return "a";
    }

似乎我无法调用webmethod。

EDIT1(由Kashif建议):

 $.ajax({
                type: "POST",
                url: "SupplierMaster.aspx/RegisterSupplier",
                data: "{'file' : " + document.getElementById("myFile").value + ",'biddername':" + document.getElementById("txtsuppliername").value + "}",
                async: true,
                contentType: "application/json; charset=utf-8",
                success: function (data, status) {
                    console.log("CallWM");
                    alert(data.d);
                },
                failure: function (data) {
                    alert(data.d);
                },
                error: function (data) {
                    alert(data.d);
                }
            });


[System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod] 
    public static string RegisterSupplier(HttpPostedFile file, string biddername)
    {

        return "a";
    }

*

2 个答案:

答案 0 :(得分:0)

试试这个。编辑一个。我在这里使用Btoa()将文件转换为base64。

dataToSend: "{'file' : " + btoa(document.getElementById("myFile").value)+ ",'biddername':" +  document.getElementById("biddername").value+ "}",

            $.ajax({
                type: "POST",
                url: "YourWebMethodClassName.aspx/SubmitBid",
                data: dataToSend,
                async: true,
                contentType: "application/json; charset=utf-8",           
                success: function (data, status) {
                    console.log("CallWM");
                    alert(data.d);
                },
                failure: function (data) {
                    alert(data.d);
                },
                error: function (data) {
                    alert(data.d);
                }
            });

        }

C# - 编辑代码

[WebMethod]
    public static string RegisterSupplier(string file, string biddername)
    {
// Write here logic to convert Base64 to file.

        return "a";
    }

答案 1 :(得分:0)

你不能发布AJAX文件的内容。您必须使用该文件POST一个表单。您应该搜索如何将带有文件输入的表单发布到Web方法。