2016年4月
为typecho设置外链转内链
先热身一下:微博URL短网址生成算法原理及(java版、php版实现实例)
wordpress版本请看 http://zhangge.net/5086.html
第一篇:
打开var/Widget/Abstract/Comments.php
文件,寻找
if ($this->url && $autoLink) {
echo '<a href="' , $this->url , '"' , ($noFollow ? ' rel="external nofollow"' : NULL) , '>' , $this->author , '</a>';
} else {
echo $this->author;
}
修改为
if ($this->url && $autoLink) {
if(strpos($this->url, $this->options->siteUrl)!==false) {
echo '<a href="', $this->url, '">', $this->author, '</a>';
} else {
echo '<a href="', $this->options->siteUrl, 'go.html?url=', urlencode($this->url), '"', ' rel="nofollow"', '>', $this->author, '</a>';
}
} else {
echo $this->author;
}
跳转页采用的是html静态页+javescript方式跳转,你也可以改用php方式,我的跳转go.html代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Microhu's Blog - 正常跳转</title>
<style type="text/css">
#show{width:500px;margin:100px auto 0;font-size:18px;color:blue;}
#show span{color:red;font-weight:blod;}
</style>
</head>
<body>
<div id="show"></div>
<script type="text/javascript">
<!--
function getUrl(){
var theUrl=location.href.split('?url=');
if(theUrl.length==1)
return 'http://www.microhu.com';
return decodeURIComponent(theUrl[1]);
}
var showme=document.getElementById('show');
showme.innerHTML='正在为你跳转到:<span>'+getUrl()+'</span>';
location=getUrl();
//-->
</script>
</body>
</html>
方法来自:@羊窝 (已关?)
第二篇:
简单方法,不用插件实现外链转内链
typecho可以自定义404页面,通过404.php即可不用插件实现外链转内链
首先,在模板目录下建立一个空的php文件:url.php,写入以下内容:
<?php
return array(
//此处以下为内链“链接地址”=>“外链地址”,依次添加自定义的转向。
'key' => 'your url here',
'weibo' => 'http://weibo.com',
'typecho' => 'http://typecho.org',
'google' => 'http://google.come',
);
?>
也就是建立一个返回数组的php文件,通过array[key]来实现读取url,以达到目的。
创建404.php页面,如果有,则直接打开编辑,在最上方加入如下代码:
$tempStr = str_replace("/index.php","",$_SERVER['REQUEST_URI']);
$action = substr($tempStr,1,2 );
if( $action == "go" ){
$urlArr = include_once 'tpl_url.php';
$query = trim(substr($tempStr,4),"/");
foreach($urlArr as $key=>$value){$arr[]=$key;}
if(in_array($query,$arr)){
header("Location: ".$urlArr[$query]);
}
}
上传,在后台“控制台”-》“网站外观”-》“编辑当前外观” 中,找到url.php,在里面修改添加自己要生成的外链转向。
如上,http://m69w.com/go/typecho 即可转向到 http://typecho.org; http://m69w.com/go/google 即转向到 http://google.com
添加自己的转向吧。
第三篇:
插件实现:
GoLinks.0.3.0
LinksRedirect(v1.0.1).zip
ShortLinks - 外链转内链,支持正文和评论者链接
第四篇
确切的说没有四的,插件+张戈博客那个JS版本
在typecho.conf
中添加rewrite ^/go/(.*)$ /go.html?url=$1 last;
,如下
if (!-e $request_filename){
rewrite ^/go/(.*)$ /go.html?url=$1 last;
rewrite (.*) /index.php;
}
在ShortLinks插件中Plugin.php的108,114行改为对应就行了,简直简单粗暴
ShortLinks插件是带301重定向
的,在Action.php中,视情况删留
JS三级联动
nginx实现访问网站或目录密码认证保护
为了加强网站后台安全管理,往往对后台进行相应的配置不能直接访问
如后台地址为:http://xxxx/admin/*, 对admin 下面的文件进行权限管理;
wordpress后台验证与处理
Math对象中所有的属性和方法
Math对象中所有的属性和方法都是静态的,没有构造函数,所以不能用Math()来定义一个Math对象,可以直接使用Math对象提供的属性和方法
Math对象的属性
属性名 | 说明 |
---|---|
constructor | 对创建此对象的函数的引用 |
E | 自然对数的底数,常数e,其值近似为2.718 |
LN10 | 10的自然对数,其值近似为2.302 |
LN2 | 2的自然对数,其值近似为0.693 |
LOG10E | 以10为底的e的对数,其值近似为0.434 |
LOG2E | 以2为底的对数,其值近似为1.442 |
PI | 常量π,其值近似为3.141159 |
prototype | 向对象添加自定义的属性和方法 |
SQRT1_2 | 1c除以2的平方根,其值近似为0.707 |
SQRT2 | 2的平方根,其值其值近似为1.414 |
Math对象的方法
方法名 | 说明 |
---|---|
abs() | 返回x的绝对值 |
acos(x) | 返回x的反余弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN |
asin(x) | 返回x的反正弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN,否则返回-π/2~π/2之间的弧度值 |
atan(x) | 返回x反正切值。返回值为-π/2~π/2之间的弧度值 |
atan2(y,x) | 返回从一个点(x,y)与X轴之间的角度,参数x和y分别为X坐标和Y坐标,返回值为-π~π之间的值 |
ceil(x) | 向上舍入,即返回大于或等于x并且与x最接近的整数 |
cos(x) | 返回x的余弦值。返回值为-1.0~1.0之间的值 |
exp(x) | 返回ex,其中e为自然对数的底数 |
floor(x) | 向上舍入,即返回小于或等于x并且与x最接近的整数 |
log(x) | 返回x的自然对数。参数x为大于0的书,如果x为负数,则返回NAN |
max(value1,value2...) | 返回参数中最大的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN |
min(value1,value2...) | 返回参数中最小的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN |
pow(x,y) | 返回xy,如果xy的结果虚数或复数,Math.pow()将返回NaN,如果xy的结果过大,可能会返回Infinity |
random() | 返回一个0~1之间的随机数 |
round(x) | 舍入到最近的整数,返回与x最近的整数 |
sin(x) | 返回x的正弦值。返回值为-1.0~10的值 |
sqrt(x) | 返回x的平方根。如果x为负数,返回NaN |
tan(x) | 返回x的正切值 |
Array数据集合
Array是一个有序的数据集合
在JavaScript中定义数组的方法有三种
1.使用数组直接量来定义
2.使用数组对象的Array()来构造函数来定义
3.使用其他对象中的方法,如使用String对象中的split()方法来返回一个数组
1.使用数组直接量
数组名=[element1,element2,element3,...]
2.使用构造函数
数组名=new Array();
数组名=new Array(length);
数组名=new Array(element1,element2,element3,...);
数组名=Array();
数组名=Array(length);
数组名=Array(element1,element2,element3,...);
3.使用String对象的split()方法
String对象的split()方法可以将一个字符串分隔成一个数组
StringObj.split(separator.limit)
StringObj是String的对象,separator是字符串或正则表达式
数组元素排列
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>数组元素排列</title>
<link rel="stylesheet" href="">
<script>
//定义用于升序排列的函数
function asc(x,y){
if(x>y){
return 1;
}
else if(x<y){
return -1;
}
else{
return 0;
}
}
//定义用于降序排列的函数
function desc(x,y){
if(x>y){
return -1;
}
else if(x<y){
return 1;
}
else{
return 0;
}
}
//定义一个数组
var arr=new Array(5,29,14,656,206,41,3,159);
document.write("原数组中的元素为:"+arr.toString()+"<br>");
//将数组元素升序排列
arr.sort(asc);
document.write("数组元素升序排列后为:"+arr.toString()+"<br>");
////将数组元素降序排列
arr.sort(desc);
document.write("数组元素降序排列后为:"+arr.toString()+"<br>");
</script>
</head>
<body>
</body>
</html>
Match的对象实例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Match的对象实例</title>
<link rel="stylesheet" href="">
<script>
var m=parseInt(prompt("请输入随机数的下限","0"));
var n=parseInt(prompt("请输入随机数的上限","0"));
with(document){
//Math的属性和方法
write("Math.E="+Math.E+"<br>");
write("Math.LN2="+Math.LN2+"<br>");
write("Math.LN10="+Math.LN10+"<br>");
write("Math.LOG2E="+Math.LOG2E+"<br>");
write("Math.LOG10E="+Math.LOG10E+"<br>");
write("Math.PI="+Math.PI+"<br>");
write("Math.SQRT1_2="+Math.SQRT1_2+"<br>");
write("Math.SQRT2="+Math.SQRT2+"<hr>");
//使用log方法计算自然数
write("Math.log("+n+"):"+Math.log(n)+"<br>");
write("Math.log("+m+"):"+Math.log(m)+"<br>");
write("Math.log(Math.exp("+m+")):"+Math.log(Math.exp(m))+"<hr>");
//使用sqrt方法计算平方根
write("Math.sqrt("+m+"):"+Math.sqrt(m)+"<br>");
write("Math.sqrt("+n+"):"+Math.sqrt(n)+"<hr>");
//在for循环中使用random方法产生10个随机数
document.write(m+"到"+n+"之间的随机数为:<br>");
for(var i=0;i<10;i++){
var reasult=Math.round(Math.random()*(n-m)+m);
document.write(reasult+",");
}
}
</script>
</head>
<body>
</body>
</html>
String的属性和方法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>String的属性和方法</title>
<link rel="stylesheet" href="">
<script>
</script>
</head>
<body>
Strin定义字符串有两种方法
1.使用new语句通过调用字符串对象的构造函数定义一个字符串对象
2.使用var语句定义一个字符串变量,而这个字符串变量可以直接使用字符串的方法个属性
String对象的属性和方法
String属性有三个:length,constructor,prototype
<code>
var s=0;
var newString=new String("teacher");
var s=newString.length;
alert(s.toString(16));
</code>
<code>
var newName=new String("Hello");
if(newName.constructor==String);{
alert("It is a String");
}
</code>
<code>
function employee(name,age){
this.name=name;
this.age=age;
}
var info=new employee("kate",35);
employee.prototype.saylary(null);
info.salary=600;
alert(info.salary);
</code>
</body>
</html>
php 生成随机 字符串 密码的方法
jquery右侧固定数字显示隐藏导航菜单
html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="zh-CN">
<title>jquery右侧固定数字显示隐藏导航菜单</title>
<script type="text/javascript" src="js/jquery.js"></script>
<link href="css/default.css" rel="stylesheet" type="text/css">
</head>
<body style="height:600px;">
<div id="header">
<div id="top">
<div id="warp">
<div class="topleft fl">
</div>
<div class="topright fr"><a href="/">返回首页</a></div>
</div>
</div>
</div>
<!-- 左侧导航 -->
<div class="leftNav">
<a href="#" style="left: -110px;">站长素材<em>0</em></a>
<a href="#" style="left: -110px;">书签切换<em>1</em></a>
<a href="#" style="left: -110px;">幻灯片<em>2</em></a>
<a href="#" style="left: -110px;">图片滚动-左<em>3</em></a>
<a href="#" style="left: -110px;">图片滚动-上<em>4</em></a>
<a href="#" style="left: -110px;">图片无缝滚动-左<em>5</em></a>
<a href="#" style="left: -110px;">图片无缝滚动-上<em>6</em></a>
<a href="#" style="left: -110px;">文字滚动-左<em>7</em></a>
<a href="#" style="left: -110px;">文字滚动-上<em>8</em></a>
<a href="#" style="left: -110px;">文字无缝滚动-左<em>9</em></a>
<a href="#" style="left: -110px;">文字无缝滚动-上<em>10</em></a>
<a href="#" style="left: -110px;">其它基础效果<em>11</em></a>
</div>
<script type="text/javascript">
var btb=$(".leftNav");
var tempS;
$(".leftNav").hover(function(){
var thisObj = $(this);
tempS = setTimeout(function(){
thisObj.find("a").each(function(i){
var tA=$(this);
setTimeout(function(){ tA.animate({left:"0"},300);},50*i);
});
},200);
},function(){
if(tempS){ clearTimeout(tempS); }
$(this).find("a").each(function(i){
var tA=$(this);
setTimeout(function(){ tA.animate({left:"-110"},300,function(){
});},50*i);
});
});
var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest;
if( isIE6 ){ $(window).scroll(function(){ btb.css("top", $(document).scrollTop()+100) }); }
</script>
<!-- 右侧导航 -->
<div class="rightNav">
<a href="#" style="right: -110px;"><em>0</em>站长素材</a>
<a href="#" style="right: -110px;"><em>1</em>书签切换</a>
<a href="#" style="right: -110px;"><em>2</em>幻灯片</a>
<a href="#" style="right: -110px;"><em>3</em>图片滚动-左</a>
<a href="#" style="right: -110px;"><em>4</em>图片滚动-上</a>
<a href="#" style="right: -110px;"><em>5</em>图片无缝滚动-左</a>
<a href="#" style="right: -110px;"><em>6</em>图片无缝滚动-上</a>
<a href="#" style="right: -110px;"><em>7</em>文字滚动-左</a>
<a href="#" style="right: -110px;"><em>8</em>文字滚动-上</a>
<a href="#" style="right: -110px;"><em>9</em>文字无缝滚动-左</a>
<a href="#" style="right: -110px;"><em>10</em>文字无缝滚动-上</a>
<a href="#" style="right: -110px;"><em>11</em>其它基础效果</a>
</div>
<script type="text/javascript">
var btb=$(".rightNav");
var tempS;
$(".rightNav").hover(function(){
var thisObj = $(this);
tempS = setTimeout(function(){
thisObj.find("a").each(function(i){
var tA=$(this);
setTimeout(function(){ tA.animate({right:"0"},300);},50*i);
});
},200);
},function(){
if(tempS){ clearTimeout(tempS); }
$(this).find("a").each(function(i){
var tA=$(this);
setTimeout(function(){ tA.animate({right:"-110"},300,function(){
});},50*i);
});
});
var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest;
if( isIE6 ){ $(window).scroll(function(){ btb.css("top", $(document).scrollTop()+100) }); }
</script>
</body>
</html>
CSS
@charset "utf-8";
/* CSS Document */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
form,fieldset,input,textarea,p,blockquote,th,td,img { padding: 0; margin: 0; }
fieldset,img { border: 0; }
address,caption,cite,code,dfn,em,strong,th,var,i { font-weight: normal; font-style: normal; }
ol,ul,li { list-style: none; }
caption,th { text-align: left; }
h1,h2,h3,h4,h5,h6 { font-weight: normal; font-size: 100%; }
q:before,q:after { content:''; }
abbr,acronym { border: 0; }
/*-- All --*/
body{ color:#333;font:12px/20px Arial,"Microsoft YaHei","宋体",sans-serif; text-align:center; background:#DCDCDC; }
a{ color:#333; text-decoration:none; outline:none;}
a:hover {color:#f00; text-decoration:underline; }
table { border-collapse: collapse; border-spacing: 0; empty-cells:show; }
table td,table th{ border:#ddd solid 1px; padding:5px 10px; }
table th{ background:#176D97; color:#fff; }
table .new td{ color:#f60; font-weight:bold; }
/*-- 左侧导航 --*/
.leftNav{ position:fixed; width:140px; left:0; top:100px; _position:absolute; text-align:left; cursor:pointer; background-image:url(about:blank); }
.leftNav a{ display:block; position:relative; height:30px; line-height:30px; margin-bottom:2px; background:#fff; padding-left:10px; width:130px; overflow:hidden; cursor:pointer; left:-110px; }
.leftNav a:hover{ text-decoration:none; color:#1974A1; }
.leftNav a:hover em{ background:#00b700}
.leftNav a em{ display:block; float:right; width:30px; background:#1974A1; color:#fff; font-size:16px; text-align:center; margin-left:10px;}
/*-- 右侧导航 --*/
.rightNav{ position:fixed; width:140px; right:0; top:100px; _position:absolute; text-align:left; cursor:pointer; background-image:url(about:blank); }
.rightNav a{ display:block; position:relative; height:30px; line-height:30px; margin-bottom:2px; background:#fff; padding-right:10px; width:130px; overflow:hidden; cursor:pointer; right:-110px; }
.rightNav a:hover{ text-decoration:none; color:#1974A1; }
.rightNav a:hover em{ background:#00b700}
.rightNav a em{ display:block; float:left; width:30px; background:#1974A1; color:#fff; font-size:16px; text-align:center; margin-right:10px;}
JS
<script src="//cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script>
JS-String对象的方法
String对象的方法
方法名 | 说明 |
---|---|
anchor() | 为字符串对象中的内容两边加上HTML的<a></a> 标记对 |
big() | 为字符串对象中的内容两边加上HTML的<big></big> 标记对 |
bold() | 为字符串对象中的内容两边加上HTML的<b></b> 标记对 |
fontcolor() | 为字符串对象中的内容两边加上HTML的<font></font> 标记对,并设置color属性 |
charAt() | 返回字符串对象中的指定位置处的字符 |
charCodeAt() | 返回一个整数,该整数表示字符串中对象中指定位置处的字符的Unicode属性 |
indexOf() | 返回某个子字符串对象中第一次出现的字符位置 |
lastIndexOf() | 作用与indexOf()相似,但搜索方向为从右到左 |
match() | 使用正则表达式模式对字符串进行搜索,并返回一个包含该搜索结果的数组 |
replace() | 使用正则表达式模式对字符串进行搜索,并对搜索到的内容用指定的字符串替换 |
search() | 返回使用正则表达式模式搜索时,第一匹配的子字符串在整个被搜索的字符中的位置 |
slice() | 返回在一个字符串的两个指定位置之间的子字符串 |
split() | 返回一个字符串按某种分隔标记符拆分为若干子字符串时所产生的字符串数组 |
substr() | 返回从指定位置开始,取出具有指定长度个数的字符所组成的字符串 |
substring() | 返回从一个位置开始,到另外一个结束位置的所有字符所组成的字符串 |
toLowerCase() | 返回一个字符串,该字符串中的所有字母转换为小写字母 |
toUpperCase() | 返回一个字符串,该字符串中的所有字母转换为大写字母 |
valueOf() | 返回某个字符串对象的原始值 |
JS-Date对象的方法
用于获取日期指定部分的方法
获取部分 | 方法名 | 说明 |
---|---|---|
获取年份信息 | getFullYear() | 获取日期对象中的年份信息,使用本地时,以4位数表示 |
getUTCFullYear() | 使用UTC小时,以4位数表示 | |
getYear() | 使用本地时,如果年份小于2000则以2位数表示,如果大于2000则以4位数表示。建议使用getFullYear()为佳 | |
月份 | getMonth() | 使用本地时,返回0-11之间的整数 |
getUTCmonth() | 使用UTC月 | |
天数 | getDate() | 使用本地时,返回0-31之间的整数 |
getUTCDate() | 使用UTC天 | |
星期 | getDay() | 星期几的信息,使用本地时,返回0-6之间的整数 |
getUTCDay() | 使用UTC星期几 | |
小时 | getHours() | 返回0-23之间的整数 |
getUTCHours() | 使用UTC小时 | |
分钟 | getMinutes() | 返回0-59之间的整数 |
getUTCMinutes() | 使用UTC分钟 | |
秒钟 | getSeconds() | 返回0-59之间的整数 |
getUTCSeconds() | 使用UTC秒钟 | |
毫秒 | getMiliseconds() | 返回0-999之间的整数 |
getMiliseconds() | 使用UTC毫秒 | |
时间差 | getTime() | 获取日期对象所代表额度时间与1970年1月1日0时之间的毫秒数差 |
getTimezoneOffset() | 获取日期所代表的时间与UTC小时之间的时差数,以分钟为单位 |
用于设置日期指定部分的方法
设置部分 | 方法名 | 说明 |
---|---|---|
设置年份 | setFullYear(year[,month,day]) | 设置日期对象中的年份信息,使用本地时 |
setUTCFullYear(year[,month,day]) | 使用UTC小时 | |
setYear(year) | 使用本地时,如果年份小于2000则以2位数表示 | |
月份 | getMonth(month[,day]) | 使用本地时 |
getUTCMonth(month[,day] | 使用UTC月 | |
天数 | setDate(day) | 本地时 |
setUTCDate(day) | UTC天 | |
小时 | setHours(hours[,minutes,seconds,miliseconds]) | 本地时 |
setUTCHours(hours[,minutes,seconds,miliseconds]) | UTC时 | |
分钟 | setMinutes(minutes[,seconds,miliseconds]) | 本地时 |
setUTCMinutes(minutes[,seconds,miliseconds]) | UTC时 | |
秒 | setSeconds(seconds[,miliseconds]) | 本地时 |
setUTCSeconds(seconds[,miliseconds]) | UTC时 | |
毫秒 | setMiliSeconds(miliseconds) | 本地时 |
setUTCMiliSeconds(miliseconds) | UTC时 | |
通过毫秒设置时间 | setTime(miliseconds) | 通过距离1970年1月1日0时多少毫秒方式设置时间 |
将日期对象转移为字符串的方法
方法名 | 说明 |
---|---|
toDateString() | 将当前Date对象中的日期转换为字符串,返回格式为“星期 月份 天数 年份” |
toTimeString() | 将当前Date对象中的日期转换为字符串 |
toUTCString() | 将当前Date对象转换以UTC时间表示的字符串 |
toGMTString() | 将当前Date对象转换以GMT时间表示的字符串 |
toLocalString() | 将当前Date对象转换以本地时间表示的字符串 |
toLocalDateString() | 将当前Date对象转换以本地时间表示的日期字符串 |
toLocalTimeString() | 将当前Date对象转换以本地时间表示的时间字符串 |
toString() | 将当前Date对象转换为字符串的形式表示 |
Ajax 查询手机号码归属地
在网上找了很多、如果根据网络提供的API直接JS Ajax查询会出问题:拒绝访问
网上说是跨域了、解决办法就是java后台访问这个API地址。下面罗列一些网络上的API地址。
淘宝网
API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
参数:
tel:手机号码
返回:JSON
拍拍
API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback
参数:
mobile:手机号码
callname:回调函数
amount:未知(必须)
返回:JSON
财付通
API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443
参数:
chgmobile:手机号码
返回:xml
百付宝
API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443
参数:
phone:手机号码
callback:回调函数
cmd:未知(必须)
返回:JSON
115
API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443
参数:
mobile:手机号码
callback:回调函数
返回:JSON
有道
API地址: http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13985046628
参数:
type:mobile(表示查询手机号码)
q:手机号码
返回:JSON
这里用的是有道的API
、下面是代码:
页面代码:
function findPhoneAddres(){
var mobile = $("#usermobil").val();
var urlAction = "<%=path %>/customermanage/listcustomerinfo!findPhoneAddres.action";
$.get(urlAction, {phoneStr:mobile}, function (data){
if(data==''||data==null){
alertMsg.info("找不到您输入的手机号码归属地!");
}else{
var json = eval("("+data+")");
var phoneStr = json.location ;
$("#userAddres").val(phoneStr.split(" ")[1]);
$("#userAddresByPhone").val(phoneStr.split(" ")[1]);
$("#userAddresLabel").html("手机号归属地:"+phoneStr.split(" ")[1])
}
});
}
后台Action方法:
/*
* 手机号码归属地查询地址
*/
private final String urlAddres = "http://www.youdao.com/smartresult-xml/search.s?" +
"jsFlag=true&type=mobile&q=";
/**
* 查询手机号码归属地
* @return
* @throws Exception
*/
public String findPhoneAddres() throws Exception{
String phone = request.getParameter("phoneStr");
String url = urlAddres+phone;
String result = ActionURL.callUrlByGet(url, "GBK");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(result);
out.close();
return null;
}
ActionURL静态类的callUrlByGet方法:
public static String callUrlByGet(String callurl,String charset){
String result = "";
try {
URL url = new URL(callurl);
URLConnection connection = url.openConnection();
connection.connect();
BufferedReader reader = new BufferedReader(new
InputStreamReader(connection.getInputStream(),charset));
String line;
while((line = reader.readLine())!= null){
result += line;
result += "\n";
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
if(result!=null&&!"".equals(result)){
result = result.substring(result.indexOf("{" +
""), (result.indexOf("}")+1) );
}
return result;
}
Test测试方法:
public static void main(String[] args) {
String url = "http://www.youdao.com/smartresult-xml/search.s?" +
"jsFlag=true&type=mobile&q=13985046628";
String result = callUrlByGet(url,"GBK");
System.out.println(result);
}
输出的结果:
{'product':'mobile','phonenum':'13985046628','location':'贵州 贵阳'}