基于javascript处理二进制图片流过程详解
今天学习怎么生成二维码,我习惯所有请求都用ajax完成
但是今天发现jquery的ajax不支持二进制,只能搞纯文本
于是百度之后手动实现这一功能
functiongetBinary(url,args,success){ varxmlhttp=newXMLHttpRequest(); vardata=eval(args); vari=0; for(varkeyindata){ if(i++===0){ url+='?'+key+"="+data[key]; }else{ url+='&'+key+"="+data[key]; } } xmlhttp.open("GET",url,true); xmlhttp.responseType="blob"; xmlhttp.onload=function(){ success(this.response); }; xmlhttp.send(); }
我没有处理不同浏览器的XHR的问题需要处理的在第一行搞就行
需要三个参数
地一个是请求url,第二个是请求参数,第三个是成功后的处理方法
请求参数用这样的方式
{‘param1':1,'param2':2,'param3':3}
处理方法要接收一个参数就是响应的数据也就是下图的data
然后是调用
functionsubmit(){ getBinary("/request/qrCode",{'data':$('#str').val()}, function(data){ varimg=$('#qrcode'); window.URL.revokeObjectURL(img.src); $('#qrcode').attr('src',window.URL.createObjectURL(data)); }) }
我这里是显示二维码
第五行的代码不能少少了的话首次执行该方法没问题再次执行的话图片不会改变需要刷新页面
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。