2013-06-04 61 views
1

我已閱讀了幾篇關於此問題的StackOverflow文章,並多次更正了我的代碼 但我無法讓我的webAPI post方法正常工作。我試圖收到帖子參數 ,但它始終爲空。從Ajax到Web API執行HTTP POST的空參數

我所試圖做的是接收代表畫布是 使用jQuery創建一個base64字符串,當用戶點擊該按鈕:

function MakePhoto(ctrl) { 

    html2canvas(ctrl, { 
     onrendered: function (canvas) { 

      var canvasData = canvas.toDataURL() 
      jQuery.ajax({ 
       url: "../api/webinfo", 
       type: "POST", 
       data: { imagedata: canvasData }, 
       success: function() { 
        alert("success"); 

       }, 
       error: function() { 
        alert("failure"); 
       } 
      }); 

     } 
    }); 

} 

WebInfoController.cs看起來是這樣的:

public void Post([FromBody]string imagedata) 
{ 

} 

imagedata參數始終爲NULL

而這個ar E中的頭我收到的的WebAPI:

「的方法:POST,

RequestUri: 'http://myhost/RestFulApi/api/webinfo'

內容:System.Net.Http.StreamContent

的User-Agent:鉻/ 27.0。 1453.94

內容長度:42226

內容類型:應用程序/ x-WW瓦特窗體-urlencoded; charset = UTF-8}

我希望你能幫助我。

謝謝

+0

又是什麼canvas.toDataURL()的返回,你確定它不是空?在你的ajax請求之前插入一個console.log(canvasData),在瀏覽器控制檯中記錄了什麼? – anderssonola

+1

我想你可能需要添加'dataType:「json」'給你的ajax調用。 – jeffesp

+0

我添加dataType:「json」,它仍然不工作:(。@ soderslatt是的,我使用chrome調試,它不是null。我可以看到base64字符串 –

回答

2

好的,經過幾個小時的研究後我發現問題。我只好數據參數傳遞到AJAX功能使用:

"=" + canvasdata, without the parameter name:

jQuery.ajax({ 
       url: "../api/webinfo", 
       type: "POST", 
       data: "=" + canvasData, 
       success: function (response) { 
        alert(response); 

       }, 
       error: function (response) { 
        alert(response.responseText); 
       } 
      });