2015-05-14 73 views
0

我想發送文本框和輸入文件數據到我的webmethod。我一直在使用Google相當一段時間,但現在仍然不知道我怎麼能做到這一點:如何使用jquery ajax調用發送texbox和attachment到webmethod?

jQuery的/ AJAX調用:

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(如卡希夫建議):

$.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"; 
    } 

*

+0

首先你要在ajax中調用的'url'是'SupplierMaster.aspx/RegisterSupplier',但是你沒有名爲'RegisterSupplier'的方法,而不是你向我們顯示名爲'SubmitBid'的方法。 –

+0

@GuruprasadRao對不起,我寫了webmethod而不是複製粘貼。我已經更新了這個問題,但問題仍然存在 – Arbaaz

+0

你試過把斷點?它擊中該webmethod? –

回答

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"; 
    } 
+0

不工作。 :( – Arbaaz

+0

)你能告訴我嗎?我的代碼改變了什麼? – Kashif

+0

我更新了我的問題。 – Arbaaz

0

不能AJAX發佈文件的內容。您必須使用該文件發佈表單。您應該搜索如何將輸入文件的表單發佈到Web方法。

相關問題