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 相关文章推荐
如何把PHP转成EXE文件
Oct 09 PHP
第六节--访问属性和方法
Nov 16 PHP
php下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
PHP新手入门学习方法
May 08 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
PHP简单实现合并2个数字键数组值的方法
May 30 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
多个Laravel项目如何共用migrations详解
Sep 25 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设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
php 注释规范
2012/03/29 PHP
php数据类型判断函数有哪些
2013/09/23 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
盘点提高 Python 代码效率的方法
2014/07/03 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
win与linux系统中python requests 安装
2016/12/04 Python
python调用API实现智能回复机器人
2018/04/10 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
python tkinter基本属性详解
2019/09/16 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
班级入场式解说词
2014/02/01 职场文书
上课看小说检讨书
2014/02/22 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
2014年妇女工作总结
2014/12/06 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL