今天学习怎么生成二维码,我习惯所有请求都用ajax完成
但是今天发现jquery的ajax不支持二进制,只能搞纯文本
于是百度之后手动实现这一功能
1 function getBinary(url, args, success) { 2 var xmlhttp = new XMLHttpRequest(); 3 var data = eval(args); 4 var i = 0; 5 for (var key in data) { 6 if (i++ === 0) { 7 url += '?' + key + "=" + data[key]; 8 } else { 9 url += '&' + key + "=" + data[key]; 10 } 11 } 12 xmlhttp.open("GET", url, true); 13 xmlhttp.responseType = "blob"; 14 xmlhttp.onload = function () { 15 success(this.response); 16 }; 17 xmlhttp.send(); 18 }
我没有处理不同浏览器的XHR的问题 需要处理的在第一行搞就行
需要三个参数
地一个是请求url,第二个是请求参数,第三个是成功后的处理方法
请求参数用这样的方式
{‘param1':1,'param2':2,'param3':3}
处理方法要接收一个参数 就是响应的数据 也就是下图的data
然后是调用
1 function submit() { 2 getBinary("/request/qrCode", {'data': $('#str').val()}, 3 function (data) { 4 var img = $('#qrcode'); 5 window.URL.revokeObjectURL(img.src); 6 $('#qrcode').attr('src', window.URL.createObjectURL(data)); 7 }) 8 }
我这里是显示二维码
第五行的代码不能少 少了的话首次执行该方法没问题 再次执行的话图片不会改变 需要刷新页面