功能需求:根据IP自动识别当前客户端的省份,在网站下次刷新或进入时记录已识别或更换的省份
实现方法:第一次进入网站时利用ajax请求调用IP地址识别程序,然后将省份放入cookie,每次刷新时判断cookie中是否存在省份,如果存在取该省份,否则调用IP识别程序
源代码如下:
<div class="csqh_nr_bran yglc_list"><h3></h3>
<div align="left" id="cityname" name="cityname">请您就近选择服务网点:</div>
<table border="0" cellpadding="0" cellspacing="5" id="tab_fh" width="99%">
<tbody>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="bj" /><span>北京分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="dl" /><span>大连分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="cc" /><span>长春分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="hlj" /><span>黑龙江分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="sy" /><span>沈阳分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="sh" /><span>上海分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="shz" /><span>苏州分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="xm" /><span>厦门分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="fj" /><span>福州分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="jn" /><span>济南分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="qd" /><span>青岛分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="yt" /><span>烟台分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="wh" /><span>武汉分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="gz" /><span>广州分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="sz" /><span>深圳分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="hk" /><span>海口分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="cq" /><span>重庆分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="km" /><span>昆明分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="sjz" /><span>石家庄分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="ty" /><span>太原分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="tj" /><span>天津分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="nj" /><span>南京分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="hf" /><span>合肥分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="hz" /><span>杭州分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="nb" /><span>宁波分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="zz" /><span>郑州分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="cd" /><span>成都分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="xa" /><span>西安分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="cs" /><span>长沙分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="nn" /><span>南宁分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="nc" /><span>南昌分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="wx" /><span>无锡分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="hhht" /><span>呼和浩特分行</span></td>
</tr>
<tr>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="wlmq" /><span>乌鲁木齐分行</span></td>
<td><input name="radiobranch" οnclick="specSelected(value);" type="radio" value="xg" /><span>香港分行</span></td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="99%">
<tbody>
<tr>
<td align="right"><input name="branchok" οnclick="showSpecBIZ(spec_biz_selected,1);" type="button" value="确定" /></td>
</tr>
</tbody>
</table>
</div>
<div class="csqh_bot"></div>
</div>
</div>
<div class="black_overlay" id="fade" style="display: none"></div>
<div id="url_a" style="display: none">[pagevisitpath:491283]</div>
<script type=text/javascript>
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
var cookstr;
if (endstr == -1)
endstr = document.cookie.length;
cookstr = unescape(document.cookie.substring(offset, endstr));
if(cookstr!=null){
return cookstr;
}
}
function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
}
function SetCookie(cookieName,cookieValue,nDays) {
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0) nDays=1;
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;expires="+expire.toGMTString();
}
function SetCookieWithDomain(domain,cookieName,cookieValue,nDays) {
var today = new Date();
var expire = new Date();
if (nDays==null || nDays==0) nDays=1;
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue) + ";path=/;domain=" + domain + ";expires="+expire.toGMTString();
}
function deleteCookie (name){
var date=new Date();
var ms= 1 * 1000;
date.setTime(date.getTime() - ms);
var str = name+"=no; expires=" + date.toGMTString(); //将过期时间设置为过去来删除一个cookie
document.cookie=str;
}
var spec_biz_selected;
$(function(){
$("#brach_lable").click(function(){
$("#cssrain").show();
$("#fade").show();
})
if (document.cookie == "") {
alert("请打开您的COOKS ,本站点需要cook 支持!");
return;
}
var cebbranchcode = null;
if(GetCookie('branchcode')!=null){
cebbranchcode = GetCookie('branchcode');
}
if(cebbranchcode!=null){
$("input[@type=radio][name='radiobranch'][value='" + cebbranchcode + "']").attr("checked",true);
}
var cebprovince=null;
if(GetCookie('province')!=null){
cebprovince = GetCookie('province');
}
if(cebprovince!=null){
spec_biz_selected=getBranchIdByProv(cebprovince.replace("分行",""));
showSpecBIZ(spec_biz_selected,1);
}else{
getProv();
}
});
//根据客户IP得到其所属的省份
function getProv()
{
$.ajax({
type:'get',
cache:false,
url:'/eportalapply/jsp/ip/ipAddress.jsp',
success:function(data){
var province = $.trim(data);
if("局域"==province||"本机"==province){
province="北京";
}
spec_biz_selected=getBranchIdByProv(province);
showSpecBIZ(spec_biz_selected,0);
SetCookie('branchcode',spec_biz_selected,365);
SetCookie('province',province,365);
},
error:function(){}
});
}
function specSelected(prov)
{
spec_biz_selected=prov;
}
function hideDialog()
{
$('#cssrain').fadeOut(1500);
$('#fade').fadeOut(1500);
}
function showSpecBIZ(prov,flag)
{
if(flag=="1"){
var fhname = "";
var val = $("input:radio:checked[name='radiobranch']").val();
if(val!=null){
fhname = $("input:radio:checked[name='radiobranch']").parent().find("span").html();
$("#brach_lable").html(fhname);
}
SetCookie('branchcode',val,365);
SetCookie('province',fhname,365);
}
if(prov!=null)
{
var url_aa=$("#url_a").html()
var strGoUrl=url_aa;
if(strGoUrl.indexOf("?")>0)
{
strGoUrl+="&fh="+prov;
}else{
strGoUrl+="?&fh="+prov;
}
$("#iframe_part").attr("src",strGoUrl);
}
hideDialog();
}
//根据省份得到分行
function getBranchIdByProv(prov)
{
if(prov=="北京"){
return 'bj';
}else if(prov=="烟台"){
return 'yt';
}else if(prov=="天津"){
return 'tj';
}else if(prov=="太原"){
return 'ty';
}else if(prov=="成都"){
return 'cd';
}else if(prov=="青岛"){
return 'qd';
}else if(prov=="武汉"){
return 'wh';
}else if(prov=="合肥"){
return 'hf';
}else if(prov=="局域"||prov=="本机"){
return 'bj';
}else{
return 'zh';
}
}
</script>
注意事项:设置cookie时中文需要加密,使用encodeURI,使用escape会造成部分固定汉字乱码,例如“局域”,不明原因