2006 年 3 月

php+ajax文件上传进度条

找到一篇文章PHP AJAX File Upload Progress Meter Updates,介绍如何用php Pear:HTML_AJAX制作带有进度条的文件上传,下面是我测试上传时的示意图

评论 (12)

apache的rewrite - 代理吞吐(Proxy Throughput)功能

今天尝试使用apache的rewrite作为ajax跨域调用代理,要用到rewrite的Proxy Throughput功能.翻看apache手册,看上去不算太复杂,只要用flag [P]就可以映射远程页面甚至整个远程网络区域到自己的名称空间.照着手册上写了个配置:
RewriteEngine On
RewriteRule ^/proxy/(.*)$ http://$1 [P,L]
我想通过上面的url重写达到这样的效果,使用代理功能访问http://www.mysite.com/proxy/www.destsite.com,自动使用代理访问www.destsite.com, url不改变.重启apache后,进行测试,始终是无法访问,于是开启rewrite日志:
RewriteLogLevel 9
RewriteLog logs/rewrite.log
日志中显示已经正确转向到www.destsite.com,但是仍然无法访问.郁闷的很,找这边的网管大哥讨教,被告知要开启proxy功能,否则rewrite的Proxy Throughput功能无法使用.于是修改httpd.conf,加入两行:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
重启apache测试,一切ok

评论

当ajax遭遇系统错误: -1072896658

上个礼拜整了个ajax调用yahoo搜索的demo,不想有网友发现search.htm会报javascript错 --- 系统错误: -1072896658.
他的服务器环境是apache 2.05+php4.3+ie6/firefox 1.07+windows server 2003,而我的服务器环境是apache 2.2+php5.1.2/php4.3+ie6/firefox 1.07+winxp.这个时候俺几乎就要把所有的错归结到windows server 2003身上了.但是对方可以正常查看我放在网上的demo,所以这跟windows的亲戚应该没太大干系,用-1072896658作为关键字google了一下,很快有了答案.
http://www.panoramio.com/blog/explorer-system-error-1072896658/
如果XMLHttpRequest对象请求的文档未指定正确的utf-8编码,就会出现这个错误
浏览器系统错误:-1072896658(Explorer system error: -1072896658)
解决办法很简单,给代理proxy.php加上简单的一行就一切ok:
PLAIN TEXT
PHP:

header('text/javascript; charset=utf-8');

评论 (8)

俺的按比例裁切缩略图函数

为了减少代码量,这里直接使用了Pear::Image_Transform图片处理类,功能是按比例生成缩略图,缩小后图片效果不变形,如果超高则纵向截取,如果超长则横向截取。

评论

wordpress 2.02

今天花了点时间升级到wordpress 2.02,相对于2.01来说改动不算太大,只是一个修正安全问题(据说是严重安全问题)的更新版本.因为我所作的改动比较少,所以整个更新时间大概为5分钟左右.但是感觉wordpress的升级步骤不是太地道,每次都要手工删除,上传.关键是要记住自己改过哪些文件,只选择性的上传一些文件,速度会快的多.
这里是如果从2.01升级到2.02的说明,比较简单,不用运行upgrade.php:
http://codex.wordpress.org/Upgrading_WordPress#Upgrade_2.0.1_to_2.0.2
发布说明:
http://wordpress.org/development/2006/03/security-202
下载最新的wordpress 2.02
http://wordpress.org/download/

评论

js中的template — Jemplate

最近在调试ajax程序的时候,要格式化数据输出html,代码比较混乱,这时候就比较怀念php里可以用到的各式各样的模板.然而js毕竟是很强大的,俺找到了这个javascript写的template类 -- Jemplate,用法还算简单.
首先得包含必要的文件:
PLAIN TEXT
HTML:

<script language="javascript" src="./prototype.js"></script>

<script language="javascript" src="./lyase_view.js"></script>

模板可以写在当前html里,也可以写在单独的模板文件:
PLAIN TEXT
HTML:

<!--模板定义在textarea标签里了-->

<textarea id="template" style="display:none">

 The Value of x is:<%= context.x%>

</textarea>

<!--赋值,上面的<%= context.x%>将被替换-->

<script>document.write(Lyase.View.render({element:"template"}, {x : 10}));</script>

如果模板写在单独的文件里:
PLAIN TEXT
HTML:

<script>document.write(Lyase.View.render({file:"tmp.tpl"}, {x : 10}));</script>

模板tmp.tpl的内容为:
PLAIN TEXT
HTML:

The value of x is:<%= context.x%>

甚至还可以支持复杂的循环:
PLAIN TEXT
HTML:

<textarea id="template" style="display:none">

<% context.list.each(function(pair){%>

      The value of <%= pair.name %> is: <%= pair.value%>

<% }) %>

</textarea>

PLAIN TEXT
JAVASCRIPT:

//code

document.write(Lyase.View.render({element:"template"}, {list :[{name [...]

评论 (5)

用javascript实现php中的str_replace

先前要写一段js脚本,将html中的指定字符替换成其它字符,如果直接用js的str.replace(),只会替换第一个出现的字符,于是写了比较粗糙能替换全部指定字符的版本:
PLAIN TEXT
JAVASCRIPT:

function strReplace(search, replace, str) {

 var tmp = str;

 do {

  str = tmp;

  tmp = str.replace(search, replace);

 }while (str != tmp);

 return str;

}

这个脚本看上去不是太爽,效率估计很勉强,于是google了一下,原来有更好的版本:
PLAIN TEXT
JAVASCRIPT:

//俺主要是为了适应php的str_replace()啊

function strReplace(search, replace, str) {

 var regex = new RegExp(search, "g");

 return str.replace(regex, replace);

}

或者oo一点的写法
PLAIN TEXT
JAVASCRIPT:

String.prototype.replaceAll = function(search, replace){

 var regex = new RegExp(search, "g");

 return this.replace(regex, replace);

}

测试一下:
PLAIN TEXT
JAVASCRIPT:

var str = 'cccaaacccaaacccaaacccaaacccaaa';

alert(str.replaceAll('aaa', 'testIt'));

呵呵,一切ok

评论 (2)