基于javascript處理二進(jìn)制圖片流過程詳解
今天學(xué)習(xí)怎么生成二維碼,我習(xí)慣所有請求都用ajax完成
但是今天發(fā)現(xiàn)jquery的ajax不支持二進(jìn)制,只能搞純文本
于是百度之后手動實現(xiàn)這一功能
function getBinary(url, args, success) {
var xmlhttp = new XMLHttpRequest();
var data = eval(args);
var i = 0;
for (var key in data) {
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的問題 需要處理的在第一行搞就行
需要三個參數(shù)
地一個是請求url,第二個是請求參數(shù),第三個是成功后的處理方法
請求參數(shù)用這樣的方式
{‘param1':1,'param2':2,'param3':3}
處理方法要接收一個參數(shù) 就是響應(yīng)的數(shù)據(jù) 也就是下圖的data
然后是調(diào)用
function submit() {
getBinary("/request/qrCode", {'data': $('#str').val()},
function (data) {
var img = $('#qrcode');
window.URL.revokeObjectURL(img.src);
$('#qrcode').attr('src', window.URL.createObjectURL(data));
})
}
我這里是顯示二維碼
第五行的代碼不能少 少了的話首次執(zhí)行該方法沒問題 再次執(zhí)行的話圖片不會改變 需要刷新頁面
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

