json实现异步手机号码归属地查询
想安装一个android开发环境,因为快有M9,至少要个helloword才能过意的去吧…..趁安装较麻烦,来发个博客。之前说过做的电信、联通、移动的短信网关正式上线了,前几天很折腾,主要是连接断后没有达到想像中的自动重启,后来花了两天调整,本来打算周末看能不能出现断掉的情况,昨晚没出现,寄希望于今晚了,因为有双色球开奖,这个很容易出现。
查询短信接收情况的时候发现一个大问题,浙江和河北两个地方的移动手机号出现:IB:0079错误,通过抓包对比,我们怀疑是业务代码填空导致,所以改为EIE,后来恢复正常。主要想说的是,出现错误时一般估计是地域问题,但是要查询一大批用户手机号码归属地….一个一个的查感觉怎么样,所以写了个批量查询的,体验地址:http://www.quou.cn/wp-code/jsonp/。
利用的是网易的API:http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13632580530,访问可以看到返回:updateCall(1, {‘product’:'mobile’,'phonenum’:’13632580530′,’location’:'广东 深圳’} , ”); 建议本人不想对字符串做解析,所以就用jsonp直接实现了,来看代码:
整个html页面很简单,一点修饰都没有,主要是不想折腾
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<div id='result'>
<ul id='resList'></ul><!--查询结果-->
</div>
<textarea cols="20" rows="10" id='phoneList'>13632580530</textarea>
<br />
<input type="button" id='checkButton' value='检查' />
<!--这里放js代码-->
</body>
</html> |
下面就是主要的实现代码了,就不啰嗦了,直接代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | var $ = function (){ var elements=new Array(); for(var i=0; i<arguments.length; i++){//查找作为参数提供的所有元素 var element=arguments[i]; if(typeof element == 'string'){//如果参数是字符串,默认为ID element=document.getElementById(element); } if(arguments.length==1){//如果只有一个参数,立即返回这个元素 return element; } elements.push(element);//否则,添加到数组 } return elements; } var sys = function(){ var oScript; //jsonp句柄 var head = document.getElementsByTagName("head")[0]; var initSys = function(){ oScript= document.createElement("script"); oScript.type = "text/javascript"; return this; }; var doFind = function(phone){ var url = 'http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q='+phone; var newScript = oScript.cloneNode(false); newScript.src = url; head.appendChild(newScript); newScript.onload = newScript.onreadystatechange = function(){ if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { newScript.onload = newScript.onreadystatechange = null//请内存,防止IE memory leaks head.removeChild(newScript); } } delete newScript; }; var check = function(){ var phones = $('phoneList').value.split('\n'); var n = phones.length; var o = null; for(var i=0; i<n; i++){ doFind(phones[i]); } }; var main = function(){ $('checkButton').onclick = check; }; return {'init' : initSys, 'run' : main}; }; var oli = document.createElement('li'); var pList = $('resList'); //updateCall(1, {'product':'mobile','phonenum':'13632580530','location':'广东 深圳'} , ''); function updateCall(t, data, res){ var li = oli.cloneNode(false); txt = '<span>'+data['phonenum']+'<\/span> : <span>'+data['location']+'<\/span>'; li.innerHTML = txt; pList.appendChild(li); } sys().init().run(); |
js写的很烂,但我也在慢慢摸索写好,最近学到的很多。之前在做竞拍的时候,他们打算启用新域名500pai.com,但因为使用了ajax,跨域问题不能解决,后来想用jsonp,但一直还没有改过来。
