逆战学习
整理一下关于怎么获取接口数据,然后渲染数据到页面上
第三方接口地址:手机归属地查询

一、思路和大致需要用到的知识点

1.body标签里准备一个input和button,用一个盒子包起来,一个无序列表先放着来存待会获取的数据

2.输入框提示输入11位手机号码 ,用正则表达式判断是否位正确的号码—用到onfocus onblur oninput 事件

3.点击button把input的值传给一个变量 --我把它设为phone – 作为接口地址变化的量

4.给button按钮添加点击事件 onclick,看变量phong 是否取到值–取到值就开始处理下一步

5.利用ajax的原理取到数据,处理数据

6.给页面添加css代码,使其美观。

二、基本知识的补充

接口:我此次使用的第三方接口已经内部做了处理,不会存在跨域问题

地址说明:http://api.k780.com/?app=phone.get&phone=13820654136&appkey=49215&sign=c0dd1e315db0662ac83695bfc61f759c&format=json
只需改动地址里面的phone = 后面的电话号码就可以得到不同的信息

ajax获取数据:请求有五个步骤
第一步,创建XMLHttpRequest对象

let ajax = new XMLHttpRequest();

第二步,注册回调函数(这一步可以放在最后一起,就不用起名,这个案例我是四步取)

ajax.onreadystatechange = cback;

第三步,配置请求信息,open()
get方式传输数据用 ? 拼接到地址后面即可
post方式则需要添加请求头

ajax.open("get", "/ashx/myz/Deta.ashx?methodName=GetAllComment", true);ajax.open("post", "/ashx/my/Deta.ashx?methodName=GetAllComment", true);

第四步,发送请求,post请求下,要传递的参数放这

ajax.send();

第五步,在回调函数中针对不同的响应状态进行处理

function cback() {// 判断异步对象的状态 只有异步才做这一步,同步可省略,但只有很少部分会同步if(ajax.readyState == 4) {// 判断交互是否成功if(ajax.status == 200) {// 获取服务器响应的数据var str = ajaxr.responseText;// 解析数据str = JSON.parse(str);}}
}

跨域的问题可以私聊和期待我下面的博客

三、开始

html结构:

根据我上面的思路,写一个 input button 代码如下:
span 用来存放提示信息

     <h3>手机号码归属地查询</h3><div class="query"><p><input type="text" /><button>查询</button></p><span></span></div><ul></ul>

js逻辑部分

获取元素 --先声明 phone 赋值空

         let phone = "";let aBtn = document.querySelector('.query button');let qInput = document.querySelector(".query input");let aSpan =document .querySelector(".query span");let ulist = document .querySelector("ul");

写输入框input 的事件处理函数

1.获取焦点 onfocus 提示输入11位手机号码

2.失去焦点 onblur 用正则表达式判断输入号码是否满足条件,满足就把值赋给phone

3.span标签存放提示内容

         qInput.onfocus = function(){aSpan.innerHTML = "请输入11位手机号码";aSpan.style.color = "#ccc";};qInput.onblur = function(){let reg = /^1[34578]\d{9}$/;//首位为1,第二位为[]中一位。其余随意数字if(reg.test(qInput.value)){//满足则把输入框内容赋值给phoneaSpan.innerHTML = "";phone = qInput.value;}else{//否则为空phone = "";}aSpan.innerHTML = "";//失去焦点清空};

写button的点击事件

1.点击buttton 判断phone是否为空值,是就提示手机号有误或为空

2.phone不为空就开始使用ajax获取数据,这里我使用的是get方式

3.用phone替换地址中的电话号码,用拼接 + 实现

         aBtn.onclick = function (){if(phone !== ""){let url = "http://api.k780.com/?app=phone.get&phone="+ phone +"&appkey=49215&sign=c0dd1e315db0662ac83695bfc61f759c&format=json"let ajax = new XMLHttpRequest();//1ajax.open("get",url,true);//2ajax.send();//3ajax.onreadystatechange = function () {//4这里把注册函数和结构写在一起了}}else{//phone为空aSpan.innerHTML = "手机号格式错误或未输入";aSpan.style.color = "firebrick";}}

处理数据----填充上面的 ajax.onreadystatechange 函数

1.判断就绪状态码,判断交互是否成功 ajax.readyState == 4

2.判断服务器响应数据 ajax .status ==200

3.ajax.responseText 为获取到的数据 用**JSON.parse(ajax.responseText)**转化为对象---------先用控制台查看结构

4.分离想要的数据渲染出来

ajax.onreadystatechange = function () {//4 一旦上面的就绪状态码发生改变,事件里面触发。if (ajax.readyState == 4) {if(ajax.status ===200){//console.log(ajax.responseText);//获取接口返回的数据,类型是字符串//console.log(JSON.parse(ajax.responseText));//转化为对象let strPhone = JSON.parse(ajax.responseText);//接收这个对象let pro = strPhone.result.att.split(',')[1];let city = strPhone.result.att.split(',')[2];//console.log(pro);let listr = `<li>查询结果</li><li><span>所属省份:</span>${pro}</li><li><span>所属城市:</span>${city}</li><li><span>城市区号:</span>${strPhone.result.area}</li><li><span>城市邮编:</span>${strPhone.result.postno}</li><li><span>运&nbsp;&nbsp;营&nbsp;&nbsp;商:</span>${strPhone.result.operators}</li>`// console.log(strPhone.result);// console.log(strPhone.result.att);//中国,四川,宜宾// console.log(strPhone.result.operators);//中国移动 运营商// console.log(strPhone.result.area);//城市区号// console.log(strPhone.result.postno);//城市邮编ulist.innerHTML = listr;ulist.style.cssText="border-top: 1px solid blue;";}}};

优化一下input 当里面的值改变时 下面的无序列表应该把内容清空

         qInput.oninput = function (){//当输入框值改变,清空ul的内容ulist.innerHTML ="";ulist.style.cssText="border-top: ;";}

最后添加css代码,使整体页面美观。
这个就看各人的喜好了,我的代码如下:

         *{margin: 0;padding: 0;}h3{width: 300px;margin: 20px auto 0;text-align: center;height: 30px;border-bottom:1px solid #ccc ;}.query{width:300px;height: 50px;margin: 50px auto;position: relative;}.query p{width: 300px;height: 30px;display: flex;border: 1px solid #ccc;}.query input {flex: 1;text-indent: 20px;outline: none;border: none;}.query button{width: 100px;font-size: 18px;line-height: 20px;height: 31px;margin-top: -1px;}.query span{font-size: 12px;position: absolute;top: 34px;left: 22px;}ul{width: 300px;margin: 0 auto;background-color: #CCC;}ul li{list-style: none;width: 298px;height: 30px;border: 1px solid blue;margin: 0 auto;line-height: 30px;border-top:none ;}ul li span{display: inline-block;width: 100px;text-align: left;margin-right:50px ;margin-left: 50px;border-right:1px solid royalblue ;}ul li:nth-child(1){text-align: center;}

四、结束

把我上面的代码整合起来就是一个相对完整的手机归属地查询案例
下面是我的效果图:

总结 :

1.熟练ajax的步骤

2.学会处理获取的数据,利用字符串数组的方法拿到自己想要的数据

3.多尝试几种方法,每个人的逻辑不一样

JavaScript学习:利用第三方接口做手机归属地查询相关推荐

  1. PHP学习笔记:利用百度api实现手机归属地查询

    从来没有用过api,都不知道怎么获得api的数据,跟着demo,然后修改,终于实现了手机号码查询的功能,代码和说明很全,大家试试. <?php /*** Created by jianqingw ...

  2. 12、手机归属地查询API接口,免费好用

    1.前言 手机归属地查询接口,这个是RollToolsApi通用系列接口的其中一个,内部包含了1个小接口,能实现查询手机号的归属地,可用于粗略估算注册用户的所在地. 查看接口完整信息:https:// ...

  3. php实现手机归属地的查询、,PHP实现手机归属地查询API接口实现代码

    我们经常会开发一些行业分类的网站,这个时候我们需要显示手机归属这个功能,这个时候我们找了很多API接口的地址,但是都不如人意,那么PHP实现手机归属地查询API接口实现代码,大家清楚吗?一起去看看爱站 ...

  4. php实现手机归属地的查询,PHP实现手机归属地查询API接口

    PHP实现手机归属地查询API接口 WebServices:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx header(& ...

  5. 手机归属地查询API接口,免费好用

    1.前言 手机归属地查询接口,能实现查询手机号的归属地,可用于粗略估算注册用户的所在地. 查看接口完整信息:https://www.idmayi.com/doc/detail?id=13 2.接口明细 ...

  6. HTML5第9节课堂笔记(初探mui,制作手机归属地查询)

    手机MUI程序 ,利用它的ajax方法访问baidu的API http://apistore.baidu.com/apiworks/servicedetail/794.html http://dev. ...

  7. wp7 手机归属地查询

    ps:之前一直看卤面网,看博客园里强人关于wp7开发介绍等也快大半个月了,不得不说实践是检验真理的唯一标准,还得自己动手做,这个是我做的第一个wp7小程序:手机归属地查询.不废话,先上图: 此应用拥有 ...

  8. Android手机归属地查询工具

    在Android应用开发中,经常需要与网络上的服务端的程序(J2EE或者.NET等应用)进行通信.交互.例如"优酷.土豆"的android客户端,每天访问都会有最新的视频资讯,那些 ...

  9. J2ME:手机归属地查询软件

    最近在网上下载了一个"猫头鹰"手机归属地查询软件,界面太繁杂,看着很不爽,于是自己也做了一个.速度也有明显的改进: 原版的软件一次读取整个文件,我这个一次只读取一组,比较完后再读取 ...

最新文章

  1. Javascript - prototype、__proto__、constructor
  2. Node学习9-gulp
  3. 可配置循环左右滚动例子
  4. STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
  5. centos7启动dhcp失败_4:Nginx服务启动、停止、重启
  6. Linux网络报文捕获/抓包技术对比:napi、libpcap、afpacket、PF_RING、PACKET_MMAP、DPDK、XDP(eXpress Data Path)
  7. python内置数据结构方法的时间复杂度
  8. linux安装自带mysql吗_Linux安装mysql8
  9. 使用JSON数据报错和方法
  10. atitit 点播系统 概览 v2 qb1.docx
  11. TS助手 v3.52 视频网站下载工具,网页视频下载神器
  12. 【ELMAN回归预测】基于matlab天牛须算法优化ELMAN回归预测【含Matlab源码 1375期】
  13. 魔兽服务器修改端口,求魔兽世界某服务器IP地址和端口
  14. 富文本编辑器实现导入word
  15. Linux的.a、.so和.o文件以及与windows下的对应关系
  16. java中提示确认_javascript对话框使用方法(警告框 javascript确认框 提示框)
  17. 服务器补丁卸载之后显示未副本,打印机无法删除,添加打印机一直变成副本,怎样删除?急需答案?...
  18. C#入门4——计算自由落体运动
  19. case zhen语句_case when zhen else (Sql 2005)
  20. 记一次el-select远程搜索默认数据回显问题

热门文章

  1. Elastic认证考试:备考环境完全指南
  2. AutoRec模型结构详解
  3. 免费软著申请登记详细教程
  4. ICRA2021 MOT GSDT论文解读
  5. 打开桌面计算机投屏到扩展屏,电脑投屏到电视显示不完全解决办法
  6. RHCE8学习过程(八)Centos8软件包的管理与安装
  7. GFlags调试堆中野指针
  8. 通信系统通信过程仿真(联合信源信道编码)
  9. VS 2013各版本的激活码
  10. python cv2什么意思_cv2,CV2是什么意思