jsonp跨域请求数据实例—手机号码查询

网上有很多开放的api,我们在本地通过ajax获取数据时,总会碰到一个问题,那就是跨域!如果不借助PHP等,仅仅通过js怎么解决跨域的问题呢?或许jsonp是个不错的选择。

实例运行效果


代码

<!DOCTYPE HTML>
<html>
<head>
<Meta charset="utf-8" />
<Meta name="author" content="@my_coder">
<Meta name="viewport"
	content="width=device-width,initial-scale=1.0,user-scalable=no,minimum-scale=1.0,maximum-scale=1.0">
<title>手机号查询</title>
<style type="text/css">
html {
	color: #000;
	background: #fff;
}

body,ul,li,input,h1,button,p {
	padding: 0;
	margin: 0;
}

li {
	list-style: none;
}

html {
	background: #F6F8FC;
	overflow: hidden;
}

.outer {
	margin: 0 auto;
	width: 280px;
	position: relative;
}

h1 {
	font-size: 20px;
	text-align: center;
	border-bottom: 1px dotted #A3C4DB;
	padding: 10px 0;
}

p {
	font-size: 14px;
	padding: 14px 0 10px;
}

input[type="text"] {
	width: 200px;
	height: 30px;
	font-size: 18px;
}

.button {
	display: inline-block;
	width: 60px;
	font-size: 16px;
	text-align: center;
	line-height: 34px;
	background: linear-gradient(#fff,#ccc);
	border: 1px solid #004;
	border-radius: 3px;
	cursor: pointer;
}

ul {
	padding-top: 26px;
}

li {
	font-size: 18px;
	line-height: 30px;
}

.error {
	position: absolute;
	left: 4px;
	top: 80px;
	color: red;
	font-size: 14px;
	display: none;
}
</style>
</head>

<body>
	<h1>手机号码归属地查询</h1>
	<div class="outer">
		<p>请输入手机号码</p>
		<input type="text"> <span class="button">查询</span> <span
			class="error">号码有误 或 无数据</span>
		<ul>
			<li class="num">手机号码: <span></span></li>
			<li class="province">归属省份: <span></span></li>
			<li class="operators">运 营 商: <span></span></li>
		</ul>
	</div>
	<script type="text/javascript" src="jquery-1.8.3.js"></script>
	<script>
		var tel;
		var ajax = function() {
			//淘宝接口    
			$.ajax({
				type : "get",url : 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel='
						+ tel,dataType : "jsonp",jsonp : "callback",success : function(data) {
					console.log(data);
					$('.error').css('display','none');
					var province = data.province,operators = data.catName,num = data.telString;
	
					$('.num span').html(num);
					$('.province span').html(province);
					$('.operators span').html(operators);
				},error : function() {
					$('li span').html('');
					$('.error').css('display','block');
				}
			});
		}
		var reg = /^(13|15|18)[0-9]{9}$/;

		//点击查询
		$('.button').click(function() {
			tel = $('input[type=text]').val();
			if (tel) {
				if (reg.test(tel)) {
					ajax();
				} else {
					$('li span').html('');
					$('.error').css('display','block');
				}
			}
		});

		//键盘事件
		$(window).keydown(function(event) {
			tel = $('input[type=text]').val();
			if (event.keyCode == 13) {
				if (tel) {
					if (reg.test(tel)) {
						ajax();
					} else {
						$('li span').html('');
						$('.error').css('display','block');
					}
				}
			}
		});
	</script>
</body>
</html>

文章来源:http://www.cnblogs.com/duanhuajian/p/3155080.html

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...