??因?yàn)楣ぷ髟颍枰{(diào)取阿里云OCR身份證識(shí)別,但是阿里云給的請(qǐng)求示例都是后臺(tái)調(diào)用的代碼,由于特殊原因,我需要的是前臺(tái)JS調(diào)用,所以決定自己嘗試一下,最后成功調(diào)用了,廢話不多說(shuō),直接上代碼。
var json = {
"image":imp,
"configure": "{\"side\":\"face\"}"
};
$.ajax({
crossDomain: true,
beforeSend: function(req) {
req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
req.setRequestHeader("Authorization", "APPCODE AppCode值");
},
type: "POST",
url:"http://dm-51.data.aliyun.com/rest/160601/ocr/ocr_idcard.json",
dateType:"JSON",
data: JSON.stringify(json),
error: function(request) {
alert("識(shí)別失敗,請(qǐng)重新上傳照片或手動(dòng)輸入");
},
success: function(data) {
var obj = JSON.parse(data);
document.getElementById('Name').value = obj.name;
document.getElementById('sex').value = obj.sex;
document.getElementById('national').value = obj.nationality;
document.getElementById('IdCard').value = obj.num;
document.getElementById('address').value = obj.address;
}
});
??通過(guò)查看阿里云的API接口說(shuō)明,發(fā)現(xiàn)其調(diào)用地址:http://ai-market-ocr-person-id.icredit.link/ai-market/ocr/personid,請(qǐng)求方式為POST,返回類型為JSON,且請(qǐng)求數(shù)據(jù)為:
{
"image": "圖片二進(jìn)制數(shù)據(jù)的base64編碼",
"configure": "{\"side\":\"face\"}" #正面/反面:face/back
}
??這些說(shuō)明了Ajax的type,url 及 dateType,由于存在跨域問(wèn)題,于是在Ajax中添加了crossDomain: true,但是發(fā)現(xiàn)還存在appcode認(rèn)證問(wèn)題,還好阿里云提供了一個(gè)調(diào)試工具,在調(diào)試工具中調(diào)試后發(fā)現(xiàn),appcode是寫在headers中的,且它的Content-Type為application/octet-stream; charset=utf-8,于是在Ajax中添加了:
beforeSend: function(req) {
req.setRequestHeader("Content-Type", "application/octet-stream; charset=utf-8");
req.setRequestHeader("Authorization", "APPCODE AppCode值");
}
??這樣就可以正常的傳值了,最后再對(duì)傳回的值做處理就可以了。