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 地址栏信息的获取代码
Jan 07 PHP
仿AS3实现PHP 事件机制实现代码
Jan 27 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
Php中使用Select 查询语句的实例
Feb 19 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
php workerman定时任务的实现代码
Dec 23 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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中array_merge和array相加的区别分析
2013/06/17 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
激活 ActiveX 控件
2006/10/09 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
分享Python文本生成二维码实例
2016/01/06 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Python如何获取文件路径/目录
2020/09/22 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
十八届三中全会报告学习材料
2014/02/17 职场文书
公务员政审材料
2014/12/23 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
个人收入证明范本
2015/06/12 职场文书
停发工资证明范本
2015/06/12 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python