来自微博客:
agentzh:今天经过一位熟悉 PHP 的 ngx_lua 用户的提点,我才知道 W3C 标准建议服务器支持使用分号字符(;)作为查询串(query string)中的参数对分隔符。PHP 支持通过 arg_separator 配置指令修改此分隔符:http://t.cn/SiBspe 看来有必要在 ngx_lua 中也引入一条 lua_arg_separator 配置指令了,呵呵。
阅读全文
agentzh:今天经过一位熟悉 PHP 的 ngx_lua 用户的提点,我才知道 W3C 标准建议服务器支持使用分号字符(;)作为查询串(query string)中的参数对分隔符。PHP 支持通过 arg_separator 配置指令修改此分隔符:http://t.cn/SiBspe 看来有必要在 ngx_lua 中也引入一条 lua_arg_separator 配置指令了,呵呵。
阅读全文
常常是这样的一对儿:
有同事问,浏览器关闭,但我PHP的程序需要在浏览器执行很长时间,怎么弄,那小子估计是想回家了,想关电脑,但又执行了,关不掉,于是有这个需求。So,有没有这样的函数,或者方法也好,实现也就是说无论客户端是否关闭浏览器,下面的程序都会执行呢.
当然有,如下:
函数:ignore_user_abort()阅读全文
有同事问,浏览器关闭,但我PHP的程序需要在浏览器执行很长时间,怎么弄,那小子估计是想回家了,想关电脑,但又执行了,关不掉,于是有这个需求。So,有没有这样的函数,或者方法也好,实现也就是说无论客户端是否关闭浏览器,下面的程序都会执行呢.
当然有,如下:
函数:ignore_user_abort()阅读全文
我用的是Total Commander8.0 ,在“配置->选项->显示->图标”中把"现实层叠图标"选上就可以了!
Window自带目录下SVN 图标不能显示问题:
Windows Explorer Shell 支持的 Overlay Icon 最多 15 个,Windows 自身使用了 4 个,只剩 11 个可扩展使用,如果你之前还安装诸如 Groove 这样的软件,可能这 11 个位置都被他们剥夺了,轮不到 Tortoise 了。不过,还是可以给 Tortoise 优先腾出位置的:调整 Tortoise 图标名称的字母顺序。因为 Windows 内部就是按图标名称的字母顺序来优先显示的。
svn文件图标不能正常显示:
1)打开注册表找到键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer \ShellIconOverlayIdentifiers,为 Tortoise 相关键加上 0 1 2 3 … 提升顺序!
2)svn文件图标不能正常显示:
症状1:项目左边导航列表不能正常显示图标
方法:windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项即可
症状2:workplace中文件或文件夹不能显示svn相关图标
方法:右键->TortoiseSVN->setting->Icon Overlays->Status cache->default/Shell。none是没有的
症状3:改变项目中右键->team->列表中的图标样式
方法:windows ->preferences->Team->SVN->菜单图标->TortoiseSVN/Subversive/默认,默认是没有
来源:http://blog.163.com/zcy4123@126/blog/static/155255877201112811758370/
Window自带目录下SVN 图标不能显示问题:
Windows Explorer Shell 支持的 Overlay Icon 最多 15 个,Windows 自身使用了 4 个,只剩 11 个可扩展使用,如果你之前还安装诸如 Groove 这样的软件,可能这 11 个位置都被他们剥夺了,轮不到 Tortoise 了。不过,还是可以给 Tortoise 优先腾出位置的:调整 Tortoise 图标名称的字母顺序。因为 Windows 内部就是按图标名称的字母顺序来优先显示的。
svn文件图标不能正常显示:
1)打开注册表找到键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer \ShellIconOverlayIdentifiers,为 Tortoise 相关键加上 0 1 2 3 … 提升顺序!
2)svn文件图标不能正常显示:
症状1:项目左边导航列表不能正常显示图标
方法:windows ->preferences->General->Appearance->Lable Decorations 勾选其中的 SVN 项即可
症状2:workplace中文件或文件夹不能显示svn相关图标
方法:右键->TortoiseSVN->setting->Icon Overlays->Status cache->default/Shell。none是没有的
症状3:改变项目中右键->team->列表中的图标样式
方法:windows ->preferences->Team->SVN->菜单图标->TortoiseSVN/Subversive/默认,默认是没有
来源:http://blog.163.com/zcy4123@126/blog/static/155255877201112811758370/
“我的电脑”左边信息栏不见了:
打开“我的电脑”
选择“工具”菜单
“文件夹选项” 常规 任务中“在文件夹中显示常见任务”。
桌面快捷方式中文件名的背景不透明了,怎么改回来?
设置一下就行了,很容易就搞定的。
如果是XP系统,用右键点击“我的电脑”----打开“属性”----“高级”----选
“性能”中设置,在“视觉效果”中勾选“在桌面上为图标标签使用阴影”,
确定,OK。
打开“我的电脑”
选择“工具”菜单
“文件夹选项” 常规 任务中“在文件夹中显示常见任务”。
桌面快捷方式中文件名的背景不透明了,怎么改回来?
设置一下就行了,很容易就搞定的。
如果是XP系统,用右键点击“我的电脑”----打开“属性”----“高级”----选
“性能”中设置,在“视觉效果”中勾选“在桌面上为图标标签使用阴影”,
确定,OK。
[个人原创]zend studio 9.0.1换行格式由windows的换行符设置为UNIX下的换行符,zend studio 9.0.1 如何取消显示换行符和空格符,以及自动换行实现。
Unix/LinuxC技术 jackxiang 2012-1-1 10:33
(0)windows换行变Linux换行:
在项目上右键后选:新的文本文件行定界符选 第一个:Unix即可。
(1)昨天由zend studio 9.0.0升级到zend studio 9.0.1,发现提并到线上的代码通过Vim查看时都有了:^M,于是发现这是一个Windows的格式,得把换行格式设置 UNIX,设置方法:
本地使用window平台,服务器使用linux,有时候难免会出现在程序在本地window上运行正常,到linux上出现报错,而问题的原因,可能就是这个换行格式的不兼容引起的,window下的换行是'/r/n',而linux/unix下是'/n',下边说说设置方法:
Window->Preferences->General->Workspace [右下角区域]
New text file line delimiter: radio buttons for 'Default' or 'Other' with a dropdown including Unix (yay),选Other:Unix 即可。
同时,你也可以在它旁边设置默认的PHP编码:如修改为Utf8等。
(2)附zend studio 9.0.1 如何取消显示换行符和空格符,有这个换行符和空格符显示反而不美观:
Windows>Preferences>General>Editors>Text Editors 取消Show whitespace characters即可。
(3)自动换行实现:Zend studio9.0.1实践成功。
Zend Studio默认没有自动换行这一功能,我使用的是V9.0.1,在 http://ahtik.com/eclipse-update 有其组件实现自动换行。
实现:菜单"help" –> "Install New Software…",然后点击"Add"按钮,接着填写上Name(随便命名),Location(即http://ahtik.com/eclipse-update ),接下按着提示操作,即可安装成功。
最后重启Zend Studio,在编辑工作区,点上右键,选上“Virtual Word Wrap”便实现文字过长超过编辑区时自动换行了。
自动换行评论:
这个功能目前zend studio只能靠一款插件来完成,随着科学技术的不断进步,zend studio自动换行将越发的显得鸡肋,就我工作的电脑来说,1680×1050的分辨率,看代码似乎一行都是可以看完的(当然我只开了zend studio左侧的php explorer和outline),显示器还会越来越大的,而且我很早的在我的电脑分辨率还是1024的时候就已经养成习惯,太长的字符串或数组会分行来写,所以,也不知道zend公司那帮人用的显示器有多大,他们就是不考虑自动换行,说句心里话,我还真不明白自动换行会带来什么好处。
原因是由于使用swt中的Text组件在setText()中使用的"\n",再通过getText()获取后在win系统上被自动转为"\r\n”,而linux中对换行符的定义为"\n”,故发送失败.而且对于定长报文而言,也引起长度变化.
win:“\r\n”,0x0D0A;
linux:“\n”,0x0A;
mac:"\r",0x0D;
在项目上右键后选:新的文本文件行定界符选 第一个:Unix即可。
(1)昨天由zend studio 9.0.0升级到zend studio 9.0.1,发现提并到线上的代码通过Vim查看时都有了:^M,于是发现这是一个Windows的格式,得把换行格式设置 UNIX,设置方法:
本地使用window平台,服务器使用linux,有时候难免会出现在程序在本地window上运行正常,到linux上出现报错,而问题的原因,可能就是这个换行格式的不兼容引起的,window下的换行是'/r/n',而linux/unix下是'/n',下边说说设置方法:
Window->Preferences->General->Workspace [右下角区域]
New text file line delimiter: radio buttons for 'Default' or 'Other' with a dropdown including Unix (yay),选Other:Unix 即可。
同时,你也可以在它旁边设置默认的PHP编码:如修改为Utf8等。
(2)附zend studio 9.0.1 如何取消显示换行符和空格符,有这个换行符和空格符显示反而不美观:
Windows>Preferences>General>Editors>Text Editors 取消Show whitespace characters即可。
(3)自动换行实现:Zend studio9.0.1实践成功。
Zend Studio默认没有自动换行这一功能,我使用的是V9.0.1,在 http://ahtik.com/eclipse-update 有其组件实现自动换行。
实现:菜单"help" –> "Install New Software…",然后点击"Add"按钮,接着填写上Name(随便命名),Location(即http://ahtik.com/eclipse-update ),接下按着提示操作,即可安装成功。
最后重启Zend Studio,在编辑工作区,点上右键,选上“Virtual Word Wrap”便实现文字过长超过编辑区时自动换行了。
自动换行评论:
这个功能目前zend studio只能靠一款插件来完成,随着科学技术的不断进步,zend studio自动换行将越发的显得鸡肋,就我工作的电脑来说,1680×1050的分辨率,看代码似乎一行都是可以看完的(当然我只开了zend studio左侧的php explorer和outline),显示器还会越来越大的,而且我很早的在我的电脑分辨率还是1024的时候就已经养成习惯,太长的字符串或数组会分行来写,所以,也不知道zend公司那帮人用的显示器有多大,他们就是不考虑自动换行,说句心里话,我还真不明白自动换行会带来什么好处。
原因是由于使用swt中的Text组件在setText()中使用的"\n",再通过getText()获取后在win系统上被自动转为"\r\n”,而linux中对换行符的定义为"\n”,故发送失败.而且对于定长报文而言,也引起长度变化.
win:“\r\n”,0x0D0A;
linux:“\n”,0x0A;
mac:"\r",0x0D;
早上听群里的兄弟如是说:
莫莫<happy.yin@qq.com> 9:14:43
先关闭MYSQL 后输出数据 的 速度比先输出数据而后 关闭MYSQL 连接的速度快?!!
http://hi.baidu.com/caoz/blog/item/a46234a83b7cc7bacb130cd5.html
莫莫<happy.yin@qq.com> 9:15:43
这家伙吧我搞糊涂了
....
引发一阵讨论热潮。。。
该文章来自:
http://hi.baidu.com/caoz/blog/item/a46234a83b7cc7bacb130cd5.html
评论:
(1)因为php执行阻塞,导致mysql链接无法迅速释放,那么,php为什么会阻塞? 逐个断点分析发现,原来echo耽误了最多时间。
谁的错,我想不是PHP的错啊,呵呵,可能是Apache的错,这块值得研究。。。(牛奶都是草的错不是,PHP千万不能承认),
可以看下风雪之隅有一篇文章名字是这样的:PHP是无辜的:http://www.laruence.com/2010/12/17/1833.html ,结论是:最后, PHP真的很无辜, 和它真没关系,呵呵。
(2)发现memcached服务器有不稳定因素,原来是memcached流量过高产生阻塞,php进程等待链接,导致mysql链接大量等待。
试问:这种问题出现了阻塞为什么没有连接超时的机制?Memcache连接超时是可以设置的,再就是从架构上,也就是从Memcahce多加几台机器等方法,或者通过服务器,客户端的一个算法来分流到不同的Memcache机器上,发现不足,同时可以加入新的机器,同时少量内存的迁移即可,这都需要一个算法来实现的。
阅读全文
莫莫<happy.yin@qq.com> 9:14:43
先关闭MYSQL 后输出数据 的 速度比先输出数据而后 关闭MYSQL 连接的速度快?!!
http://hi.baidu.com/caoz/blog/item/a46234a83b7cc7bacb130cd5.html
莫莫<happy.yin@qq.com> 9:15:43
这家伙吧我搞糊涂了
....
引发一阵讨论热潮。。。
该文章来自:
http://hi.baidu.com/caoz/blog/item/a46234a83b7cc7bacb130cd5.html
评论:
(1)因为php执行阻塞,导致mysql链接无法迅速释放,那么,php为什么会阻塞? 逐个断点分析发现,原来echo耽误了最多时间。
谁的错,我想不是PHP的错啊,呵呵,可能是Apache的错,这块值得研究。。。(牛奶都是草的错不是,PHP千万不能承认),
可以看下风雪之隅有一篇文章名字是这样的:PHP是无辜的:http://www.laruence.com/2010/12/17/1833.html ,结论是:最后, PHP真的很无辜, 和它真没关系,呵呵。
(2)发现memcached服务器有不稳定因素,原来是memcached流量过高产生阻塞,php进程等待链接,导致mysql链接大量等待。
试问:这种问题出现了阻塞为什么没有连接超时的机制?Memcache连接超时是可以设置的,再就是从架构上,也就是从Memcahce多加几台机器等方法,或者通过服务器,客户端的一个算法来分流到不同的Memcache机器上,发现不足,同时可以加入新的机器,同时少量内存的迁移即可,这都需要一个算法来实现的。
阅读全文
[实践Ok]secureCRT通过代理进行ssh连接,http协议代理。
Unix/LinuxC技术 jackxiang 2011-12-28 21:00
Putty也有这个代理的功能,但Putty有一个proxy选项可以选http的代理哟,还真可以的。也有几个不好也就是没有很好的支持SZ,RZ,还有Stfp等,尽管有一个哥们风雪之隅写了一篇文章可以支持sz,rz等,Le Putty – Putty with Zmodem:http://www.laruence.com/2010/04/21/1442.html,但配置起来还是较为麻烦,那个Putty也没有SecureCRT好用不是,呵呵,在网上找了一篇文章能解决这个问题,实践还真可以哩,以前就一直用Putty了,呵呵。
1. 在secureCRT中,options -> Global Options -> Firewall,点击 Add,填上name,选择适当的 Type,例如 Http
2. Session Options -> SSH2,修改 Firewall 选项,用上一步设置好的 proxy。其实这一步是先试链接不上,再设置它的防火墙,选第一步里的防火墙配置的http代理等的设置。
3. enjoy it
实践Ok来源:http://blog.csdn.net/yhcharles/article/details/6697405
它还可以用来做端口转发,俗称翻墙:http://www.jems.me/blog/web/29-%E4%BD%BF%E7%94%A8securecrt%E5%AE%9E%E7%8E%B0windows%E7%8E%AF%E5%A2%83ssh%E4%BB%A3%E7%90%86%E7%BF%BB%E5%A2%99.html
阅读全文
1. 在secureCRT中,options -> Global Options -> Firewall,点击 Add,填上name,选择适当的 Type,例如 Http
2. Session Options -> SSH2,修改 Firewall 选项,用上一步设置好的 proxy。其实这一步是先试链接不上,再设置它的防火墙,选第一步里的防火墙配置的http代理等的设置。
3. enjoy it
实践Ok来源:http://blog.csdn.net/yhcharles/article/details/6697405
它还可以用来做端口转发,俗称翻墙:http://www.jems.me/blog/web/29-%E4%BD%BF%E7%94%A8securecrt%E5%AE%9E%E7%8E%B0windows%E7%8E%AF%E5%A2%83ssh%E4%BB%A3%E7%90%86%E7%BF%BB%E5%A2%99.html
阅读全文
shell的getopts:用getopts获取命令行参数
Php/Js/Shell/Go jackxiang 2011-12-28 20:38
问:
fsockopen - fputs - fget 后得到网页的内容,其中头部包括了那些headr信息的,请问如何能够把这些信息去掉?阅读全文
fsockopen - fputs - fget 后得到网页的内容,其中头部包括了那些headr信息的,请问如何能够把这些信息去掉?阅读全文
[个人原创]Linux下不常用shell命令备案
Unix/LinuxC技术 jackxiang 2011-12-28 09:45
查看设备上所有的活动的进程:
fuser -m /dev/hda5
杀死所有访问该设备的文件:
fuser -k /dev/hda5
访问某个文件是否打开,有哪些进程在使用:
fuser -m /usr/local/apache2/conf/httpd.conf
实践如下:
fuser -m /usr/local
/usr/local: 1272e 1274e 1275e 1278e 1968ce 2139m 2587e 2682e 2683 2723e 2797ce 3689e 3692ce 3720e 3735e 5664ce 6244ce 6247ce 6774e 6790e 6927e 7075e 7224e 7226e 7227e 7485ce 7495ce 7513ce 9269e 9903ce 9913ce 11553e 11791e 12025e 12029e 12057e 12061e 12198e 12448e 12534e 12584e 13053e 13133e 13635e 13672e 13814e 13829e 13831e 13832e 14099e 14159e 14682e 14813e 14840e 14907e 15621e 15810e 16200ce 16208ce 16331e 16960e 17938e 18505e 18507e 18694e 19704m
fuser -m /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf: 1272e 1274e 1275e 1278e 1968ce 2139m 2587e 2682e 2683 2723e 2797ce 3689e 3692ce 3720e 3735e 5664ce 6244ce 6247ce 6774e 6790e 6927e 7075e 7224e 7226e 7227e 7485ce 7495ce 7513ce 9269e 9903ce 9913ce 11553e 11791e 12025e 12029e 12057e 12061e 12198e 12448e 12534e 12584e 13053e 13133e 13635e 13672e 13814e 13829e 13831e 13832e 14099e 14159e 14682e 14813e 14840e 14907e 15621e 15810e 16200ce 16208ce 16331e 16960e 17938e 19704m
登录用户名:
logname
root
显示行号:
nl /usr/local/apache2/conf/httpd.conf
script -a:输出附在末尾:script option file
报告所连接的设备和终端:
tty
/dev/pts/5
whereis fuser: 给出系统命令二进制文件及其在线手册的路径:
fuser: /bin/fuser /usr/share/man/man1/fuser.1.gz /usr/share/man/man1p/fuser.1p.gz
请问如何用shell添加或减少crontab -e 项
Unix/LinuxC技术 jackxiang 2011-12-27 16:07
定时任务只能通过crontab -e 来编辑计划任务吗
我想通过shell来添增加或减少计划项,
可是直接添加或减少不行哟
如比
$echo " 0 6 * * * /usr/bin/start.sh" /usr/spool/cron/crontabs/root
添加倒是成功了,可是不会执行..必须通过手工 crontab -e才行
请问该如何做哟,谢谢!
请问如何用shell添加或减少crontab -e 项
1.copy or backup
#crontab -l > /tmp/root.crontab
2.edit
edit root.crontab by vi,emacs, ed ,etc etc .
3.activate
#crontab /tmp/root.crontab
点评:有这种需求一很有可能是搞运营开发的,哇哈。
导入原理:usage: crontab [-u user] file
-l (list user's crontab)
> 重定向
自动化脚本修改。
By:jack
来源:http://bbs.chinaunix.net/thread-542028-1-1.html
我想通过shell来添增加或减少计划项,
可是直接添加或减少不行哟
如比
$echo " 0 6 * * * /usr/bin/start.sh" /usr/spool/cron/crontabs/root
添加倒是成功了,可是不会执行..必须通过手工 crontab -e才行
请问该如何做哟,谢谢!
请问如何用shell添加或减少crontab -e 项
1.copy or backup
#crontab -l > /tmp/root.crontab
2.edit
edit root.crontab by vi,emacs, ed ,etc etc .
3.activate
#crontab /tmp/root.crontab
点评:有这种需求一很有可能是搞运营开发的,哇哈。
导入原理:usage: crontab [-u user] file
-l (list user's crontab)
> 重定向
自动化脚本修改。
By:jack
来源:http://bbs.chinaunix.net/thread-542028-1-1.html
Jquery中的this与$(this)
Php/Js/Shell/Go jackxiang 2011-12-27 14:58
序言:在使用jquery操作js时,经常整不明白this与$(this)。抽空仔细测试了一把,记录下来以供在忘记的时候拉出来参考参考!
$(this)生成的是什么
$()生成的是什么呢?实际上$()=jquery(),那么也就是说返回的是一个jquery的对象。
题外话:通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context,可以指定context为一个dom元素集或者jquery对象。
那么依照,$()返回的是jquery对象这一结论,我们可以得出$(this)得到的是一个jquery对象.我们可以使用万能的alert()方法打印出一个对象:
alert($('#btn'));显示的结果:
test 该图红色框勾选出来的是一个object,不用考虑,该object自然是jquery的对象咯。也即是说我们用通过$('#btn')来调用jquery的方法和属性等。
this代表什么?
this,编程的人都知道this表示上下文所处的这个对象,这个自然是不错的,可是这个对象到底是个什么对象呢?加入js里面也有getType的话返回的值会是什么呢?其实js里面不需要使用getType,因为我们有万能的alert.请看看下面的代码:
根据我们的经验(因为$()生成的是jquery的对象嘛),this自然是一个jquery的对象咯。可是我们看看返回的结果:
test1返回的是什么?【object HTMLInputElement】——伟大的html对象,嘿嘿。所以我们通常在直接使用this.val()或者直接通过this来调用jquery所特有的方法或属性的时候会报错误:mistake 为什么呢?明知故问!html对象当然“不包含属性或方法”了。那么为什么在一个jquery对象的上下文中调用this返回的是一个html对象而不是jquery对象 呢?翻遍jquery的api文档,貌似jquery中并未对this这一关键字进行过特殊“处理”,也就是说这里this是js中的,而不是jquery重新定义了的。so...当然这仅仅是我自己的想法,如果有对此更了解的朋友可以留言更正。而我们再看一下以上代码中alert($(this));的返回,自然是jquery的对象了,在此调用jquery特有的方法和属性,完全没有问题。
结论:
this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性,方法
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。
测试代码:
来源:http://www.cnblogs.com/iceWolf/archive/2009/08/27/1555138.html
阅读全文
$(this)生成的是什么
$()生成的是什么呢?实际上$()=jquery(),那么也就是说返回的是一个jquery的对象。
题外话:通常我们为了简便直接使用$(),实际上,该函数省略了一个参数context,即$(selector)=$(selector,document).如果指定context,可以指定context为一个dom元素集或者jquery对象。
那么依照,$()返回的是jquery对象这一结论,我们可以得出$(this)得到的是一个jquery对象.我们可以使用万能的alert()方法打印出一个对象:
alert($('#btn'));显示的结果:
test 该图红色框勾选出来的是一个object,不用考虑,该object自然是jquery的对象咯。也即是说我们用通过$('#btn')来调用jquery的方法和属性等。
this代表什么?
this,编程的人都知道this表示上下文所处的这个对象,这个自然是不错的,可是这个对象到底是个什么对象呢?加入js里面也有getType的话返回的值会是什么呢?其实js里面不需要使用getType,因为我们有万能的alert.请看看下面的代码:
根据我们的经验(因为$()生成的是jquery的对象嘛),this自然是一个jquery的对象咯。可是我们看看返回的结果:
test1返回的是什么?【object HTMLInputElement】——伟大的html对象,嘿嘿。所以我们通常在直接使用this.val()或者直接通过this来调用jquery所特有的方法或属性的时候会报错误:mistake 为什么呢?明知故问!html对象当然“不包含属性或方法”了。那么为什么在一个jquery对象的上下文中调用this返回的是一个html对象而不是jquery对象 呢?翻遍jquery的api文档,貌似jquery中并未对this这一关键字进行过特殊“处理”,也就是说这里this是js中的,而不是jquery重新定义了的。so...当然这仅仅是我自己的想法,如果有对此更了解的朋友可以留言更正。而我们再看一下以上代码中alert($(this));的返回,自然是jquery的对象了,在此调用jquery特有的方法和属性,完全没有问题。
结论:
this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性,方法
$(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值。
测试代码:
来源:http://www.cnblogs.com/iceWolf/archive/2009/08/27/1555138.html
阅读全文
[个人备忘]网页里做异步的跨域请求之iframe无刷新跨域上传文件并获取返回值
Php/Js/Shell/Go jackxiang 2011-12-27 10:14
通常我们会有一个统一的上传接口,这个接口会被其他的服务调用。如果出现不同域,还需要无刷新上传文件,并且获取返回值,这就有点麻烦了。比如,新浪微博启用了新域名www.weibo.com,但接口还是使用原来的域:picupload.t.sina.com.cn。
研究了一下新浪微博的处理方法,这里大概演示一下。
首先是一个正常的上传页面 upload.html
这里有一个关键点是form的target要指向iframe,同时把iframe隐藏起来,这样上传的处理结果就会显示在该iframe里。action里的cb(callback)参数表示处理完成后要跳转的url,因为我们的目标是iframe,所以只会把跳转的页面输出到iframe,而不会让当前页面跳转。
还有一点,callback url要和当前页面同域。跨域的iframe无法调用父页面的内容。【这儿如跨域了怎么办呢?】
再来看看deal.php,也就是form的action
这里可以处理文件,然后入库。操作完成后,把文件的id及其他信息都放在url里,最后跳转到这个url。
最后来看看deal_cd.html,也就是刚刚deal.php跳转到的url,这个文件的内容会填充到页面的iframe里。
b.a.com上的deal.php (这个是请求API的页面,如上传文件的页)
这种方式适用于{www.a.com, a.com, script.a.com, css.a.com}中的任何页面相互通信。这儿的关键在于两个页面都要有设定document.domain =XXX,如果有一个不设定的话,都会报错!!!
备注:某一页面的domain默认等于window.location.hostname。主域名是不带www的域名,例如a.com,主域名前面带前缀的通常都为二级域名或多级域名,例如www.a.com其实是二级域名。 domain只能设置为主域名,不可以在b.a.com中将domain设置为c.a.com。
常规用document.domain+iframe的设置,也就是上面这种方法。
当然还有其他的上传跨域方法:利用iframe和location.hash window.name实现的跨域数据传输 Html5等。
如跨域文件上传解决方案:上传文件到A网站,然后通过PHP的ftp函数、或HTTP模拟上传到B,这样的话返回的json一直是在A网站上的;另外也可以参考一下腾讯的,如果两个网站都是你的,比如你a网站的域名为www.a.com,在B网站同时绑定一个域名upload.www.a.com,就可以直接上传到B网站并返回json数据了,来自:http://www.gosenz.com/blog/Default.aspx?__tencentip=10.16.64.112&__tencentid=1&__tencentrawurl=http://www.gosenz.com/blog/?p=89
以上稍微整理自网上By:jack。
参考:http://blog.leezhong.com/tech/2011/05/06/crossdomain-upload.html
http://developer.51cto.com/art/201102/245701.htm
研究了一下新浪微博的处理方法,这里大概演示一下。
首先是一个正常的上传页面 upload.html
这里有一个关键点是form的target要指向iframe,同时把iframe隐藏起来,这样上传的处理结果就会显示在该iframe里。action里的cb(callback)参数表示处理完成后要跳转的url,因为我们的目标是iframe,所以只会把跳转的页面输出到iframe,而不会让当前页面跳转。
还有一点,callback url要和当前页面同域。跨域的iframe无法调用父页面的内容。【这儿如跨域了怎么办呢?】
再来看看deal.php,也就是form的action
这里可以处理文件,然后入库。操作完成后,把文件的id及其他信息都放在url里,最后跳转到这个url。
最后来看看deal_cd.html,也就是刚刚deal.php跳转到的url,这个文件的内容会填充到页面的iframe里。
b.a.com上的deal.php (这个是请求API的页面,如上传文件的页)
这种方式适用于{www.a.com, a.com, script.a.com, css.a.com}中的任何页面相互通信。这儿的关键在于两个页面都要有设定document.domain =XXX,如果有一个不设定的话,都会报错!!!
备注:某一页面的domain默认等于window.location.hostname。主域名是不带www的域名,例如a.com,主域名前面带前缀的通常都为二级域名或多级域名,例如www.a.com其实是二级域名。 domain只能设置为主域名,不可以在b.a.com中将domain设置为c.a.com。
常规用document.domain+iframe的设置,也就是上面这种方法。
当然还有其他的上传跨域方法:利用iframe和location.hash window.name实现的跨域数据传输 Html5等。
如跨域文件上传解决方案:上传文件到A网站,然后通过PHP的ftp函数、或HTTP模拟上传到B,这样的话返回的json一直是在A网站上的;另外也可以参考一下腾讯的,如果两个网站都是你的,比如你a网站的域名为www.a.com,在B网站同时绑定一个域名upload.www.a.com,就可以直接上传到B网站并返回json数据了,来自:http://www.gosenz.com/blog/Default.aspx?__tencentip=10.16.64.112&__tencentid=1&__tencentrawurl=http://www.gosenz.com/blog/?p=89
以上稍微整理自网上By:jack。
参考:http://blog.leezhong.com/tech/2011/05/06/crossdomain-upload.html
http://developer.51cto.com/art/201102/245701.htm
[个人原创]Warning: Invalid argument supplied for foreach 最简单解决方法
Php/Js/Shell/Go jackxiang 2011-12-26 16:00
经常对提交过来的数据进行双重循环,或者如下的for循环,但是数组为空时会报错:
这里的$tstSumOptionArr是由数据库查询出来的,有可能为Null,所以PHP在foreach 一个Null时会报警,而在前面强制一个这个是数组就不会报警了。
否则,你可能会这样来处理,如下:
这里的$tstSumOptionArr是由数据库查询出来的,有可能为Null,所以PHP在foreach 一个Null时会报警,而在前面强制一个这个是数组就不会报警了。
否则,你可能会这样来处理,如下:
我依然记得当我完成学业时,我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久我就意识到,还有很多事是我所不了解的。
在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。阅读全文
在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。阅读全文