利用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的就别说话了,谢谢
换成post。
果断post啊
只能post了, 这个时候, 没得选择了, 既然用到了ajax, 建议所以都用post, 不要用get
用encodeURIComponent把base64编码下再放到url里面
没用
@凡图:我就呵呵了,你都用了post请求了为什么还把url挂在链接后面??自己基础不好就不要怪别人的回答不对