判定客户端IP所在的省市[2]

在上一篇地址控件的基础上,添加了判定客户端IP所在省市的功能。

调用新浪提供的IP库接口:http://counter.sina.com.cn/ip/,(可直接点击链接查看返回的数据)

126提供的接口备用:http://ip.ws.126.net/ipquery


在线演示:http://sandbox.runjs.cn/show/sgrk3ceu

核心代码(setClientAddress.js):

//根据客户端IP判定其所在省市
//expr:用于筛选元素的jQuery表达式
var setClientLocation = function(expr){
		//调用新浪接口
		//返回样例数据:var ILData = new Array("61.175.198.120","中国", "浙江省", "杭州市", "电信"); if (typeof(ILData_callback) != "undefined") { ILData_callback(); }
		$.ajax({
		type:"get",
		cache: true,
		async: false,//这里的设置为同步没起作用
		url:"http://counter.sina.com.cn/ip/",
		async:false,
		dataType: 'script',//设置服务器返回的数据类型
		scriptCharset: 'gb2312',//防止乱码
		success: function(){
			if(ILData[2])
			{
				//可以做个是否为表单元素的判定,选择使用val()还是text(),还未实现
				$(expr).val($.trim(ILData[2])+'-'+ $.trim(ILData[3]));
			}
		}
	});
		
	//如果新浪接口失效,使用126接口
	//接口返回数据:var lo="浙江省", lc="杭州市"; var localAddress={city:"杭州市", province:"浙江省"}
	if(!$(expr).val())
	{
		$.ajax({
			type:"get",
			cache: true,
			async: false,
			url:"http://ip.ws.126.net/ipquery",
			async:false,
			dataType: 'script',
			scriptCharset: 'utf-8',
			success: function(){
				if(lo)
					$(expr).val($.trim(lo)+'-'+$.trim(lc));
			}
		 });
		}
	};


调用:

//调用setClientAddress.js中封装的方法
//参数为jQuery表达式,如#id, .class之类
setClientLocation('#consignoraddress');


1.分享下资料

    ip地址api第三方jsonp接口整理

 2.尝试使用jsonp来实现,还存在一些问题,优先完成项目就直接使用上面的方式实现。jsonp资料

   jsonp详解

  说说json与jsonp,也许你会豁然开朗  


posted on 2014-11-12 19:22  云贤力  阅读(182)  评论(0编辑  收藏  举报

导航