최근 Ajax 기술을 배우고 있어서 작은 Demo를 자주 작성하곤 합니다. 예를 들어 지난번에 작성한 「jQuery로 온라인에서 QQ 이름과 아바타 가져오기」가 있습니다. 오늘 소개할 것도 Ajax 프로젝트로, 주요 기능은 온라인에서 t.cn의 시나 단축 URL을 생성하는 것입니다. 인터넷에서 많은 URL 단축 서비스를 살펴봤는데, 모두 URL을 입력한 후 버튼을 클릭해야 실행되더군요. 제가 만든 것은 그럴 필요가 없습니다.
HTML 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>在线生成 t.cn 短网址</title>
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div> 长链接 <input type="text" name="" id="longurl" value="" /></div><br>
<div> 短链接 <input type="text" name="" id="shorturl" value="" /></div><br>
<script>
$("#longurl").blur(function() {
var url = $("#longurl").val();
$.ajax({
type: "get",
url: "https://v1.ikxin.com/api/tcnurl.php?from=txt&url=" + url,
success: function(data) {
$("#shorturl").val(data);
},
error: function() {
$("#shorturl").val("获取失败");
}
});
})
</script>
</body>
</html>
PHP 코드
<?php
$apiurl = 'http://api.t.sina.com.cn/short_url/shorten.json'; // 新浪短网址 json 接口
$source = '3271710248'; // 新浪 source 验证码
$geturl = $_GET ['url'];
$format = $_GET ['format'];
switch ($format){
case "text":
if(substr($geturl, 0, 4) != 'http'){
echo "您的输入有误!";
}else{
$suo_url = sprintf($apiurl.'?source='.$source.'&url_long='.$geturl);
$dwzcode = file_get_contents($suo_url);
$dwz = str_replace(array('[',']'), '', $dwzcode);
$dwzurl = json_decode($dwz,true);
echo $dwzurl['url_short'];
}
break;
case "json":
if(substr($geturl, 0, 4) != 'http'){
echo "您的输入有误!";
}else{
$suo_url = sprintf($apiurl.'?source='.$source.'&url_long='.$geturl);
$dwzcode = file_get_contents($suo_url);
$oldarr = array('[',']','url_short','url_long',',"type":0');
$newarr = array('','','shorturl','longurl','');
$dwz = str_replace($oldarr, $newarr, $dwzcode);
echo $dwz;
}
break;
case "jsonp":
if(substr($geturl, 0, 4) != 'http'){
echo "您的输入有误!";
}else{
$suo_url = sprintf($apiurl.'?source='.$source.'&url_long='.$geturl);
$dwzcode = file_get_contents($suo_url);
$oldarr = array('[',']','url_short','url_long',',"type":0','{','}');
$newarr = array('','','shorturl','longurl','','callbackUrl({','})');
$dwz = str_replace($oldarr, $newarr, $dwzcode);
echo $dwz;
}
break;
default:
echo "您的输入有误!";
}