PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)


Posted in PHP onAugust 31, 2012

看点:
1、file_get_contents超时控制。
2、页面编码判断。
3、键盘Enter键捕捉响应。
4、键盘event兼容处理。//event = event || window.event;
5、XMLHttpRequest 和 jQuery 两种实现方案。
6、页面及源码同时展示。
XMLHttpRequest版本 get_web.php

<?php 
header("Content-type: text/html; charset=utf-8"); 
if(!empty($_POST['input_text'])) { 
ini_set('default_socket_timeout', 10); 
if(!$data = file_get_contents($_POST['input_text'])) { 
echo "Time out!"; 
return ; 
} 
$charset_pos = stripos($data,'charset'); 
if($charset_pos) { 
if(stripos($data,'utf-8',$charset_pos)) { 
echo iconv('utf-8','utf-8',$data); 
}else if(stripos($data,'gb2312',$charset_pos)) { 
echo iconv('gb2312','utf-8',$data); 
}else if(stripos($data,'gbk',$charset_pos)) { 
echo iconv('gbk','utf-8',$data); 
} 
return; 
} 
echo $data; 
}else { 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Get Web Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript"> 
function createXMLHTTP() 
{ 
try 
{ 
var request = new XMLHttpRequest(); 
} 
catch(e1) 
{ 
var arrVersions = ["Microsoft.XMLHTTP","MSXML2.XMLHttp.4.0", 
"MSXML2.XMLHttp.3.0","MSXML2.XMLHttp.5.0"]; 
for(var i=0;i < arrVersions.length;i++){ 
try{ 
request = new ActiveXObject(arrVersions[i]); 
}catch(e2){ 
request = false; 
} 
} 
} 
return request; 
} 
function ajax_post(url, params, target_id) 
{ 
request = new createXMLHTTP(); 
request.onreadystatechange = function() { 
if (this.readyState == 4) 
if (this.status == 200) 
if (this.responseText != null) 
document.getElementById(target_id).innerHTML = this.responseText; 
} 
request.open("POST", url, true); 
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
request.setRequestHeader("Content-length", params.length); 
request.setRequestHeader("Connection", "close"); 
request.send(params); 
} 
var checked = false; 
function check_(value) { 
checked = value; 
} 
function get_key(event) { 
event = event || window.event; 
if(event.keyCode==13 && checked != false) 
{ 
var url = document.getElementById('input_text').value; 
if(url != '') { 
get_page(); 
}else { 
document.getElementById('input_text').onfocus(); 
return false; 
} 
} 
} 
function get_page() { 
var url = document.getElementById('input_text').value; 
if(!url) { 
return false; 
}else { 
if(document.getElementById('output_page').innerHTML != '') { 
document.getElementById('output_page').innerHTML = ''; 
} 
} 
if(url.indexOf('http://') == -1) { 
url = 'http://'+url; 
} 
ajax_post( 
'<?php echo $_SERVER['PHP_SELF']; ?>', 
'input_text='+url, 
'output_page' 
); 
document.getElementById('click_show').style.display = 'block'; 
document.getElementById('back_a').href = document.location.href; 
document.getElementById('origin_website').href = url; 
} 
</script> 
<style> 
.div_box{ 
margin-top:10px; 
} 
.input_box{ 
border:1px solid; 
margin-left:10px; 
margin-top:2px; 
height:15px; 
float:left; 
size:32 
font-size: 14px; 
} 
.button_box{ 
float:left; 
height:23px; 
padding-bottom:3px; 
} 
.hide_box{ 
display:none; 
} 
.a_box{ 
margin-left:10px; 
margin-top:3px; 
height:15px; 
float:left; 
font-size: 14px; 
} 
.clear_box{ 
height:50px; 
} 
</style> 
</head> 
<body onkeydown="get_key(event)"> 
<div class="div_box"> 
<input id="input_text" class="input_box" type="text" value="" onclick="check_(true)" onblur="check_(false)"></input> 
<input type="button" class="button_box" onclick="get_page()" value="Get it!" ></input> 
<div id="click_show" class="hide_box"> 
<a id="origin_website" class="a_box" href="#" target="_black">访问原站</a> 
<a id="back_a" class="a_box" href="#">后退</a> 
</div> 
</div> 
<div class="clear_box"></div> 
<div id="output_page"></div> 
</body> 
</html> 
<?php 
} 
//End_php

jQuery 版本 get_web.php
<?php 
header("Content-type: text/html; charset=utf-8"); 
if(!empty($_POST['input_text'])) { 
ini_set('default_socket_timeout', 10); 
if(!$data = file_get_contents($_POST['input_text'])) { 
echo "Time out!"; 
return ; 
} 
$charset_pos = stripos($data,'charset'); 
if($charset_pos) { 
if(stripos($data,'utf-8',$charset_pos)) { 
echo iconv('utf-8','utf-8',$data); 
}else if(stripos($data,'gb2312',$charset_pos)) { 
echo iconv('gb2312','utf-8',$data); 
}else if(stripos($data,'gbk',$charset_pos)) { 
echo iconv('gbk','utf-8',$data); 
} 
return; 
} 
echo $data; 
}else { 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Get Web Page</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$(document).keyup(function(e){ 
e = e || window.event; 
if(e.keyCode == 13 && $("#input_text").val() != '') { 
$(".button_box").click(); 
} 
}); 
$(".button_box").click(function(){ 
if($("#input_text").val() == '') { 
$("#input_text").addClass('errorTips').focus(); 
return false; 
}else { 
$("#input_text").removeClass('errorTips'); 
} 
$.ajax({ 
url: '<?php echo $_SERVER['PHP_SELF'] ?>', 
data: 'input_text='+$("#input_text").val(), 
type:'POST', 
success:function(msg){ 
$(".html_tips").show(); 
$("#origin_website").attr('href',$("#input_text").val()); 
$("#back_a").attr('href',document.location.href); 
$("#click_show").show(); 
$("#output_page_html").empty().val(msg).css({height:parseInt($(document).height()-100)}).show(); 
$("#output_page").empty().html(msg).show(); 
} 
}); 
}); 
}); 
</script> 
<style> 
.div_box{ 
margin-top:10px; 
} 
.input_box{ 
border:1px solid; 
margin-left:10px; 
margin-top:2px; 
height:15px; 
float:left; 
size:32 
font-size: 14px; 
} 
.button_box{ 
float:left; 
height:23px; 
padding-bottom:3px; 
} 
.hide_box{ 
display:none; 
} 
.a_box{ 
margin-left:10px; 
margin-top:3px; 
height:15px; 
float:left; 
font-size: 14px; 
} 
.clear_box{ 
height:50px; 
} 
.error_tips{ 
border:1px solid red; 
} 
#output_page_html{ 
width:960px; 
margin:0 auto; 
} 
.html_tips{ 
float: left; 
margin: 0 21px; 
font-size:1.8em; 
} 
</style> 
</head> 
<body> 
<div class="div_box"> 
<input id="input_text" class="input_box" type="text" value=""></input> 
<input type="button" class="button_box" value="Get it!" ></input> 
<div id="click_show" class="hide_box"> 
<a id="origin_website" class="a_box" href="#" target="_black">访问原站</a> 
<a id="back_a" class="a_box" href="#">后退</a> 
</div> 
</div> 
<div class="clear_box"></div> 
<div class="html_tips hide_box">站点</div> 
<div id="output_page"></div> 
<div class="html_tips hide_box">站点源码</div> 
<textarea id="output_page_html" class="hide_box"></textarea> 
</body> 
</html> 
<?php 
} 
//End_php

作者:Zjmainstay
PHP 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
PHP的简易冒泡法代码分享
Aug 28 #PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 #PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 #PHP
PHP 图片水印类代码
Aug 27 #PHP
PHP setTime 设置当前时间的代码
Aug 27 #PHP
PHP 透明水印生成代码
Aug 27 #PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 #PHP
You might like
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
document.createElement()用法
2013/03/13 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
vue弹窗组件使用方法
2018/04/28 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python解决八皇后问题示例
2018/04/22 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python3对接mysql数据库实例详解
2019/04/30 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
C#面试题
2016/05/06 面试题
构造方法和其他方法的区别
2016/04/26 面试题
介绍一下UNIX启动过程
2013/11/14 面试题
计算机系本科生求职信
2014/05/31 职场文书
写景作文评语集锦
2014/12/25 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android