2014-04-16 99 views
1

我试图通过html2canvas发送一个截图到服务器使用AJAX调用和POST方法,但它没有发生。当我试图通过在相关行设置断点来使用Firebug来调试脚本时,我的应用程序不会触及断点。无法在ajax调用ASPX调试WebMethod

这里是(使用jQuery)我的客户端代码:

$("#excel").on("click", function (e) { 
     e.preventDefault(); 

     html2canvas($("#placeholder").get(0), { 
      onrendered: function (canvas) { 
       //document.body.appendChild(canvas); 

       var img = canvas.toDataURL().replace(/^data[:]image\/(png|jpg|jpeg)[;]base64,/i, ""); 
       $.ajax({ 
        "type": "POST", 
        "url": "Default.aspx/MyMethod", 
        "data": { 
         "imageData": img //Send to WebMethod 
        } 
       }).done(function (o) { 
        console.log(["Response:", o]); 
       }); 

      } 
    }); 

这是我的服务器端ASPX的WebMethod:

[WebMethod()] 
public static void MyMethod(string imageData) 
{ 

    string fileNameWitPath = "D:/Kabir/custom_name.png"; 
    using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create)) 
    { 
     using (BinaryWriter bw = new BinaryWriter(fs)) 
     { 
      byte[] data = Convert.FromBase64String(imageData);//convert from base64 
      bw.Write(data); 
      bw.Close(); 
     } 
    } 

当我尝试看看吧内萤火虫,其状态是200 OK。这是为什么发生?

+0

是否正确地传递参数?还检查整个网址是否正确,并且它没有打到别的地方?你在函数的开始尝试了断点吗? – Cyassin

+0

@ user2338488 localhost:4247/JQPlot/Default.aspx/MyMethod这是我的URl和参数是正确的 – Laxman

+0

@ user2338488我在console.log([“Response:”,o])上得到错误;当在萤火虫 – Laxman

回答

0

您有无效的JSON:

   "type": "POST", 
       "url": "Default.aspx/MyMethod", 
       "data": { 
        "imageData": img //Send to WebMethod 
       } 

问题是你的画布数据,使用这一个。并且只需替换var img =“image”;变量为你的愿望输入

$(document).ready(function() { 
      $("#excel").on("click", function (e) { 
       e.preventDefault(); 
       //document.body.appendChild(canvas); 
       var img = "image"; 
       $.ajax({ 
        type: "POST", 
        url: "Default.aspx/MyMethod", 
        data: JSON.stringify({ imageData: img }), 
        contentType: "application/json; charset=utf-8" 
       }).done(function (o) { 
        console.log(["Response:", o]); 
       }); 


      }); 
     }); 
+0

错误为“未知web方法MyMethod。<br>参数名称:methodName”in萤火虫响应 – Laxman

+0

问题在你的画布数据,看到我的答案上面,并相应地改变 –

+0

我做你的建议仍然相同的结果..没有断点符合 – Laxman

0

在您的客户端

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#excel").on("click", function (e) { 
       e.preventDefault(); 
       //document.body.appendChild(canvas); 
       var img = "image"; 
       $.ajax({ 
        type: "POST", 
        url: "Default.aspx/MyMethod", 
        data: JSON.stringify({ imageData: img }), 
        contentType: "application/json; charset=utf-8" 
       }).done(function (o) { 
        console.log(["Response:", o]); 
       }); 
      }); 
     }); 
    </script> 
    <input type="button" id="excel" title="something" /> 

在后面的代码

[WebMethod()] 
     public static void MyMethod(string imageData) 
     { 

      string fileNameWitPath = "D:/Kabir/custom_name.png"; 
      using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create)) 
      { 
       using (BinaryWriter bw = new BinaryWriter(fs)) 
       { 
        byte[] data = Convert.FromBase64String(imageData);//convert from base64 
        bw.Write(data); 
        bw.Close(); 
       } 
      } 
     }