2017-03-14 93 views
0

我有一個畫布在我的.aspx表單頁面,其中一個可以簽名的簽名,我想發送base64數據從JQuery客戶端到C#Asp.Net端。在這裏我想將這個base64數據上傳到數據庫。從JQuery發送數據到C#,ASP.Net

(一對夫婦的事情,我試過) 的Jquery:

$("#savebtn").bind("click", function() { 
    var base64 = $('#sketch')[0].toDataURL("image\png"); 
    $.ajax({ 
     url: 'EvaluatieForm.aspx', // page where i have button listenener 
     data: '{ data: "' + base64 + '"}', 
     type: 'POST', 
     async: true, 
     cache: false, 
     contentType: "application/json; charset=utf-8", 
     success: function (result) { 
      console.log("inside sucess"); 
      console.log("result: " + result); 
     }, 
     error: function (request, error) { 
      // This callback function will trigger on unsuccessful action     
      alert('Error!'); 
     } 
    }); 

$.post("EvaluatieForm.aspx", { data: base64 }); // another thing i tried 

C#:

var d = Request.Params["data"]; 

變量d爲空,當我把一個斷點它。 有沒有人看到我能如何解決這個障礙,還是讓它更容易? (注意:我沒有很多JQuery的經驗)

+0

什麼問題? – Imad

+0

變量「d」爲空,我想在那裏有我的base 64數據 – sansactions

+0

你檢查過'base64'的值是什麼嗎?它是否填充但遺失在AJAX請求中,還是從'toDataURL()'方法爲空?另外,爲什麼不[將畫布轉換爲Blob](http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata)併發送二進制'FormData'那麼你可以綁定到C#中的'File'類? –

回答

0

你的帶有base64的JSON可以作爲請求體提供。

using (StreamReader reader = new StreamReader(context.Request.InputStream)) 
{ 
    string text = reader.ReadToEnd(); 
} 
0

如果通過

url: 'EvaluatieForm.aspx?data=' + base64 

更換

url: 'EvaluatieForm.aspx' 

,並刪除

data: '{ data: "' + base64 + '"}', 

那麼它會工作。

+0

那麼不會需要重新加載的網址?或什麼 – sansactions

+0

@sansactions我不這麼認爲。試試吧。 – Imad

+0

我會在半小時內嘗試 – sansactions

0

試試這個: 只需對您現有的代碼進行一些小改動,就可以使用JSON.stringify來發布數據。

$("#savebtn").bind("click", function() { 
var base64 = $('#sketch')[0].toDataURL("image\png"); 
var objectToPasss = {data: base64}; 
var postData =JSON.stringify(objectToPasss); 
$.ajax({ 
    url: 'EvaluatieForm.aspx', // page where i have button listenener 
    data: postData, 
    type: 'POST', 
    async: true, 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    success: function (result) { 
    console.log("inside sucess"); 
    console.log("result: " + result); 
    }, 
    error: function (request, error) { 
    // This callback function will trigger on unsuccessful action     
    alert('Error!'); 
    } 
}); 

$.post("EvaluatieForm.aspx", { data: base64 }); 
0

嘗試這種情況:

$("#savebtn").bind("click", function() { 
$.ajax({ 
     url: 'EvaluatieForm.aspx', // page where i have button listenener 
     data: { 
     sketch: $('#sketch')[0].toDataURL("image\png") 
     }, 
     type: 'POST', 
     async: true, 
     cache: false, 
     contentType: "application/json; charset=utf-8", 
     success: function (result) { 
     console.log("inside sucess"); 
     console.log("result: " + result); 
     }, 
     error: function (request, error) { 
     // This callback function will trigger on unsuccessful action     
     alert('Error!'); 
     } 
}); 

其中

var d = Request.Params["sketch"]; 

在jQuery的AJAX()函數中的數據參數與所述的contentType協同工作。當你將它設置爲application/json時,那麼數據就會被序列化,所以設置草圖變量似乎是正確的。