2013-06-04 59 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); 
       } 
      });