首页 新闻 会员 周边

.net 给httphandler用ajax的url传base64,无法进入一般处理程序

0
悬赏园豆:15 [已关闭问题] 关闭于 2016-11-30 16:06

利用jSignature已经获取到img的src的图片字符串。可是用ajax无法把过长的参数放到url上

 

 

求大神指点指点如何给一般处理程序传base64值

参考了下

http://blog.csdn.net/jokewang5199/article/details/16965857

但是没有解决。

问题补充:

有没有能帮我解决问题的啊

  1 <head>
  2     <title>手写板签名demo</title>
  3     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  4     <meta charset="UTF-8">
  5     <meta name="description" content="overview & stats" />
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
  7 </head>
  8 <body>
  9     <div id="signature"></div>
 10     <form id="formID" method="post" enctype="multipart/form-data">
 11         <p style="text-align: center">
 12             <b style="color: red">请按着鼠标写字签名。</b>
 13         </p>
 14 
 15         <input type="button" value="保存" id="yes" />
 16         <input type="button" value="下载" id="download" />
 17         <input type="button" value="重写" id="reset" />
 18         <input type="button" value="上传" id="uploadFile" />
 19 
 20         <div id="someelement"></div>
 21     </form>
 22     <script src="Scripts/jquery-2.1.4.min.js"></script>
 23     <script src="Scripts/Jquery.form.js"></script>
 24     <!--[if lt IE 9]>
 25         <script src="jSignature/flashcanvas.js"></script>
 26     <![endif]-->
 27     <script src="Scripts/JSignature/jSignature.js"></script>
 28     <script>
 29         $(function () {
 30             var $sigdiv = $("#signature");
 31             $sigdiv.jSignature(); // 初始化jSignature插件.
 32             $("#yes").click(function () {
 33                 //将画布内容转换为图片
 34                 var datapair = $sigdiv.jSignature("getData", "image");
 35                 var i = new Image();
 36                 i.src = "data:" + datapair[0] + "," + datapair[1];
 37                 i.id = "Upload";
 38                 i.name = "Upload";
 39                 $(i).appendTo($("#someelement")); // append the image (SVG) to DOM.
 40             });
 41             //datapair = $sigdiv.jSignature("getData","base30");
 42             //$sigdiv.jSignature("setData", "data:" + datapair.join(","));
 43             $("#download").click(function () {
 44                 downloadFile("a.png", convertBase64UrlToBlob($("img").attr("src")));
 45             });
 46             $("#reset").click(function () {
 47                 $sigdiv.jSignature("reset"); //重置画布,可以进行重新作画.
 48                 $("#someelement").html("");
 49             });
 50         });
 51         function downloadFile(fileName, blob) {
 52             var aLink = document.createElement('a');
 53 
 54 
 55             var evt = document.createEvent("HTMLEvents");
 56             evt.initEvent("click", false, false, document.defaultView);//initEvent 不加后两个参数在FF下会报错, 感谢 Barret Lee 的反馈
 57             aLink.download = fileName;
 58             aLink.href = URL.createObjectURL(blob);
 59             aLink.dispatchEvent(evt);
 60         }
 61         /**
 62          * 将以base64的图片url数据转换为Blob
 63          * @param urlData
 64          *            用url方式表示的base64图片数据
 65          */
 66         function convertBase64UrlToBlob(urlData) {
 67 
 68             var bytes = window.atob(urlData.split(',')[1]);        //去掉url的头,并转换为byte
 69 
 70             //处理异常,将ascii码小于0的转换为大于0
 71             var ab = new ArrayBuffer(bytes.length);
 72             var ia = new Uint8Array(ab);
 73             for (var i = 0; i < bytes.length; i++) {
 74                 ia[i] = bytes.charCodeAt(i);
 75             }
 76 
 77             return new Blob([ab], { type: 'image/png' });
 78         }
 79 
 80 
 81         $("#uploadFile").click(function () {
 82             alert($("#Upload").attr("src"));
 83             var a = $("#Upload").attr("src");
 84             var str = JSON.stringify(a);
 85             $.base64.utf8encode = true;
 86             var da = $.base64.btoa(str);
 87             alert(da);
 88             //$("#formID").ajaxSubmit({
 89             //    url: "HttpHandler/UploadHandler.ashx?method=UploadElectronicSign&src=" + da,
 90             //    type: "post",
 91             //    //data:data,
 92             //    success: function (data) {
 93             //        //......
 94             //    },
 95             //    error: function (aa) {
 96             //        alert(aa[0]);
 97             //    }
 98             //});
 99             $.ajax({
100                 type: "post", 
101                 url: "HttpHandler/UploadHandler.ashx?method=UploadElectronicSign&src=" + da,
102                 //error: function (XmlHttpRequest, textStatus, errorThrown) { alert("请求失败,请联系管理员!");; },
103                 success: function (d) {
104 
105                 }
106             });
107         });
108     </script>
109 
110 </body>

代码如下,怎么也进不到handler内。求个明白人指点,什么说POST的就别说话了,谢谢

CTRA王大大的主页 CTRA王大大 | 初学一级 | 园豆:30
提问于:2016-11-29 17:09
< >
分享
所有回答(4)
-1

换成post。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-29 17:19
-1

果断post啊

balahoho | 园豆:2050 (老鸟四级) | 2016-11-29 17:24
-1

只能post了, 这个时候, 没得选择了, 既然用到了ajax, 建议所以都用post, 不要用get

风浪 | 园豆:2996 (老鸟四级) | 2016-11-29 17:25
0

用encodeURIComponent把base64编码下再放到url里面

ArthurLi | 园豆:686 (小虾三级) | 2016-11-30 10:03

没用

支持(0) 反对(0) CTRA王大大 | 园豆:30 (初学一级) | 2016-11-30 10:06

@凡图:我就呵呵了,你都用了post请求了为什么还把url挂在链接后面??自己基础不好就不要怪别人的回答不对

支持(0) 反对(0) balahoho | 园豆:2050 (老鸟四级) | 2016-11-30 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册