请稍等...页面即将加载完成

json实现异步手机号码归属地查询

时间: 2011-03-27 / 分类: Ajax应用 / 浏览次数: 603 views / 0个评论 发表评论

      想安装一个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>

      下面就是主要的实现代码了,就不啰嗦了,直接代码:

View Code JAVASCRIPT
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,但一直还没有改过来。

更多
订阅

发表评论

您的昵称 *

您的邮箱 *

您的网站


4 + = thirteen