前言
前段时间看到一个国外的网站,在线生成ajax loading动画。觉得很实用,于是动起了移植到自己网站的念头(一直以来的习惯,看到好的工具总想着移植到本地好好研究)。根据以往移植的经验最终把 这个工具移植到自己网站上了,生成图片的核心还是用了原来网站的接口,所以这个功能的实现完全依赖于原网站,生成和下载图片的速度取决于网速,由于是国外 的网站,功能并不稳定。下面介绍下我移植的过程已经遇到的问题。
1.把原网站的代码本地化
这一步比较简单,不过有点麻烦,相关的图片,css,js,html文件保存在本地。
2.实现生成图片的功能
这里遇到了第一个问题,网站生成的图片保存在根据颜色值生成的途径上,而这些图片有防盗链设置,不 允许外来网站引用。尝试过写程序把网站上的所有图片按原目录下载到本地,但是图片太多,放弃了这个思路。
最后采取的办法是通过伪造来源访问原网站的图片,获取图片数据,并直接输出在页面。
下面是实现的代码
- $file=$_REQUEST['file'];
- $url = ’http://www.ajaxload.info/’.$file;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_HEADER,0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_REFERER, “http://www.ajaxload.info”);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- $chData = curl_exec($ch);
- if (curl_errno($ch)) {
- echo ’Curl error: ’ . curl_error($ch);
- }
- curl_close($ch);
- header(“Content-type:image/gif”);
- echo $chData;
注:本人的网站基于BAE建设,与其他服务器的伪造来源有些区别
其他服务器需把
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
替换成
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
把上述代码保存为ajaxload.php文件用下面的代码
- var url = ’http://bloglaotou.duapp.com/ajaxloader.php?file=cache/’+c1+’/'+c2+’/'+c3+’/'+c4+’/'+c5+’/'+c6+’/'+$$(‘type’).value+’-'+trans+’.gif’;
注:http://bloglaotou.duapp.com替换成你自己的ajaxloader.php文件的地址。
替换原网站script.js文件中的
- var url = ’cache/’+c1+’/'+c2+’/'+c3+’/'+c4+’/'+c5+’/'+c6+’/'+$(‘type’).value+’-'+trans+’.gif’;
3.下载图片的实现
同样的原因,原网站的下载功能移植到本地后也不能用了,实现的方法与生成图片的方法类似
代码如下
- if(isset($_GET[url])){
- $file=$_GET[url];//获取参数
- header(“Content-Type: application/force-download”);
- header(“Content-Disposition: attachment; filename=ajax-loading.gif”);//$downname是下载后的文件名
- $file=$_REQUEST['url'];
- $url = ’http://www.ajaxload.info/’.$file;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_HEADER,0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_REFERER, “http://www.ajaxload.info”);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- $chData = curl_exec($ch);
- if (curl_errno($ch)) {
- echo ’Curl error: ’ . curl_error($ch);
- }
- curl_close($ch);
- echo $chData;
- exit;//结束程序
- }
把上面的代码保存为download.php并把原网站script.js文件中的
- if(!$(‘downloadit’)) domEl(‘a’,'Download it’,[['id','downloadit'],['href','download.php?img='+url]],$(‘previewinner’));
替换为
- if(!$(‘downloadit’)) domEl(‘a’,'下载’,[['id','downloadit'],['href','http://bloglaotou.duapp.com/download.php?url='+path]],$(‘previewinner’));
注:http://bloglaotou.duapp.com替换成你自己的ajaxloader.php文件的地址。
效果预览
该功能已经集成到网站的小工具里,点这里查看
相关推荐
### Echarts通过Ajax实现动态数据加载 #### 一、引言 在现代Web开发中,数据可视化是一项重要的技能。Echarts作为一款强大的JavaScript图表库,因其丰富的图表类型、灵活的配置选项以及良好的交互性而备受开发者...
在IT领域,PHP和AJAX是两种非常关键的技术,...通过这种方式,PHP和AJAX结合使用,可以实现无刷新的动态数据加载,同时加载动画的使用,使得用户体验更加友好。了解并熟练掌握这些技术,对于Web开发者来说至关重要。
在IT领域,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于网页动态加载数据,它可以实现页面无刷新更新,提升用户体验。本话题聚焦于利用Ajax动态加载无限级树结构的复选框,这是一个常见于文件管理、...
`simplehtmltree3.5`是一个强大的JavaScript库,它允许开发者根据XML数据动态生成交互式的树状视图,并支持Ajax方式来实现节点的异步加载,极大地提升了用户体验。本文将深入探讨这个库的核心功能和应用场景。 首先...
总之,这个资源为开发者提供了丰富的Ajax加载动画和进度条实现方案,无论是用于学习新技能,还是直接应用于实际项目,都能显著提升用户界面的交互性和专业性。通过学习和实践,我们可以更好地掌握前端动态效果的实现...
在实际应用中我们经常会用到树,无论是用javascript实现还是用TreeView等控件,都能很好的...为了解决这个问题,我曾经在项目里利用Ajax来动态加载节点,即开始只显示必要的节点,当用户展开树的时候再加载对应的节点......
在本项目"ajax,servlet动态加载dtree"中,我们看到的是利用Ajax技术和Servlet实现dtree(一种树形菜单控件)的动态加载。这个项目可能是一个文件管理系统或者目录浏览应用,其中dtree用于展示文件或目录结构,而...
Ajax(Asynchronous JavaScript and XML)是实现瀑布流动态加载的核心技术,它允许网页在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。这样可以提高用户体验,因为页面交互更为流畅,加载速度更快。 ...
在ECharts中通过Ajax实现动态加载折线图的方法,主要涉及到前端JavaScript编程,以及后端数据服务的配合。 在本教程中,我们将学习如何利用ECharts结合Ajax技术,实现一个动态加载折线图的数据可视化。具体知识点...
利用Ajax实现树的动态加载(包含基本实现代码)。
"图片ajax动态分批加载"是一种优化策略,通过结合PHP和AJAX技术,可以实现图片的按需加载,即用户滚动到页面底部时,再动态加载下一批图片,这样既提高了页面加载速度,又不影响用户浏览。 首先,我们需要理解PHP和...
本文将深入探讨如何利用Ajax实现动态加载树形结构,并结合dhtmlx库中的dhtmlxMenu和dhtmlxTree组件,实现支持右键菜单、复选框、拖拽以及排序功能,同时支持json和xml格式的数据加载。 首先,我们要理解Ajax的工作...
在加载动画方面,jQuery提供了一系列简便的方法来创建动态效果,比如`.fadeIn()`, `.slideToggle()`, 和 `.animate()`等,这些方法可以轻松实现页面内容的平滑过渡,使用户在等待内容加载时不会感到枯燥乏味。...
在本项目中,我们利用jQuery Masonry插件来实现瀑布流效果,并结合Ajax技术实现动态加载数据,进一步提升用户体验。 jQuery Masonry插件是由David DeSandro开发的一个JavaScript库,它的主要功能是将网页中的元素以...
**jQuery实现Ajax分页后自动生成页码工具详解** 在Web开发中,数据量庞大的页面通常需要采用分页展示,以提高用户体验。Ajax技术的引入,使得页面可以在不刷新整个页面的情况下实现数据的动态加载,这极大地提升了...
在IT领域,AjaxTree是一种利用Ajax技术实现的动态加载树形结构数据的解决方案。Ajax(Asynchronous JavaScript and XML)的核心在于无需刷新整个页面就能与服务器交换数据并更新部分网页内容,提高了用户体验。在这...
WEB开发中经常会用到AJAX来进行异步操作 通常在网络状况差的情况下 可能你的一个操作会有延迟 而客户端如果没有接受到提示可能会导致多次发送 如果你使用了jQuery,那么你可以使用这里提供的loading.js 只要引入到...
本文将深入探讨Ajax如何与JSP(JavaServer Pages)和Servlet结合,实现动态加载数据。 首先,我们需要了解JSP和Servlet的基础概念。JSP是一种服务器端的技术,用于生成动态网页。开发者可以在JSP文件中混合HTML、...
* 能够以Ajax方式动态加载节点 * 为树形目录的所有节点定义单击事件 不支持的功能 * 节点的拖拽操作 * 含有复选按钮的节点 * 目录节点的单击事件是统一定义的,不能为个别节点定义不同的单击事件 与其他树形目录...