作者存档

jquery无法提交表单

2012年8月4日 3 条评论

form表单提交可以直接使用表单的submit按钮来完成,也可以使用js的方式来提交,只要获取form对象,调用其submit方法即可,往往js的方式可以让提交表单更加灵活。当然使用jquery也可实现提交。如下的代码片段:

<script>
function jsSubmit() {
	var frm = document.getElementById('frm');
	frm.submit();
}

function jquerySubmit() {
	$('#frm').submit();
}
</script>

<form id="frm" action="./formtest.htm" method="get">
Username:<input type="text" name="username" />
<br />
<input type="submit" name="submit" value="提交" />
</form>
<a href="javascript:jsSubmit()">js submit form</a>
<br /><br />
<a href="javascript:jquerySubmit()">jquery submit form</a>

除了使用提交按钮外,普通js和jquery的方式都无法提交表单。多次确认js的代码是没有问题,可就是不工作。问题原因是出现在命名冲突上,就是说,在form表单中不能出现input的name或id属性的值为submit。上述代码的问题就是提交按钮的name的值为submit,所以造成js方式无法提交表单。所以如果要使用js来操作表单,一定要注意命名的问题。

修改linux系统时间

2012年8月3日 没有评论

date命令不仅可以显示系统当前时间,还可以用它来修改系统时间。命令格式为:

date -s 时间字符串

例如只修改系统的日期,不修改时间(时分秒)

date -s 2012-08-02

或只修改时间不修改日期

date -s 10:08:00

当然也可以同时修改日期和时间

date -s "2012-05-18 04:53:00"

注意:由于日期和时间之间有空格,所以必须用引号引起来,否则命令会报错。

上述修改只是修改了linux的系统时间,CMOS中的时间可能还没有改变,所以为了保险,需要使用 clock -w 把当前系统时间写入到CMOS中。

系统时间和CMOS时间的关系。系统时间是由linux操作系统来维护的;CMOS时间是CMOS芯片保存的时间。系统启动时,操作系统将从CMOS读出时间记录为系统时间,同时操作系统也会自动每隔一段时间将系统时间写入CMOS中。如果使用date命令修改系统时间后马上重启电脑,操作系统还没有将系统时间同步到CMOS,这样开机后就还是没有修改前的时间了,所以为了保险起见,最还还是手动使用命令 clock 将系统时间同步到CMOS中。

http 405 错误

2012年8月2日 没有评论

在进行ajax调用时,测试js逻辑时把请求地址随便指定为http://www.baidu.com,结果调用没有任何返回,通过查看请求,发现请求的状态码为405。第一次接触到这个,在网上找了一下,原来是大部分的web服务器都不允许静态静态页面响应POST请求,否则就会返回“HTTP/1.1 405 Method not allowed”错误。刚好我的ajax请求方式使用的POST,所有就出错,也就没有任何返回信息。

yslow无法正常工作

2012年8月2日 1 条评论

Yslow是yahoo开发的一个firefox插件,用于页面的性能分析,提供一些优化意见,帮助优化页面。其中还有一项功能我很喜欢,就是能把页面的所有js都显示出来,而且是美化的。因为现在很多网站都是使用压缩后的js,而且一个页面加载几个到十几个,如果逐个去分析确实是一件难事,当使用Yslow把所有的js都显示一个页面后,可以通过查找方式快速来获取有用的信息。

Yslow一直都是配合这firebug插件一起使用的,这段时间换了系统,只装了最新的Firefox和firebug插件,刚好遇到一个问题,需要分析页面的js,就想到Yslow,安装一切顺利,但是重启浏览器后,firebug里面没有出现Yslow,折腾好久也没有搞定,开始还以为是mac系统下不能正常功能,然后在虚拟机的win xp安装最新的Firefox、firebug及yslow,结果一样不能工作。

只好求助google,一顿狂搜,终于在mozilla官网上找到了结果,原来是由于firebug跟Yslow不兼容造成的,链接地址:http://mozilla.com.cn/post/16305/。经过测试firebug 1.7.3以上的版本都不能使用Yslow,1.7.3还能正常使用,不过firefox 14下这个版本firebug似乎有些功能又不能用。所以为了使用Yslow只能下载一个低版本的firebug凑合,使用完了再升级firebug。希望它们早日解决兼容性问题。

mac下iphone备份文件夹路径

2012年8月2日 没有评论

使用itunes跟iphone同步时,每次都会创建一个备份文件,mac下备份文件存放的路径为:

~/Library/Application Support/MobileSync/Backup

同样对iphone进行固件升级时,升级文件存放的路径为:

~/Library/iTunes/iPhone Software Updates

前往该目录的方式为:打开finder,在菜单中选择“前往” –> “前往文件夹”,在出来提示框中输入上述地址即可。快捷键为:command + shift + G。

禁止页面缓存

2012年7月29日 没有评论

要想控制页面不缓存,无非是从过期时间、页面的最后更新时间以及Cache-Control来入手。只要在响应的header信息中正确设置了这些信息就能到达页面不缓存的目的。例如在php中通过header函数来设置页面不缓存:

header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); 
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); 
header( 'Cache-Control: no-store, no-cache, must-revalidate' ); 
header( 'Cache-Control: post-check=0, pre-check=0', FALSE ); 
header( 'Pragma: no-cache' );

说明:
Expires(过期时间)只要设置成一个过去的时间即可;

Last-Modified(页面最后更新时间)设置为当前时间,让浏览器获取最新的页面资料;

第一个Cache-Control,告诉浏览器不要缓存当前页面,针对HTTP 1.1 协议

第二个Cache-Control主要是针对古老的IE 5

Pragma: no-cache针对HTTP 1.0 协议告诉浏览器不要

php header 之 Set-Cookie

2012年7月29日 没有评论

php设置cookie可以使用setcookie函数或header函数。使用header方式时候需要注意字符串的顺序,如果顺序不对,可能会出现意想不到的问题。正确的顺序为

name=value; [expires=date; [path=path]; [domain=domainname]; [secure]]

例如:在netingcn.com下设置一个名为cookiename,值为cookieValue,过期时间为一年的cookie

header("Set-Cookie: cookiename=cookieValue; expires=" . gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT", time() + (86400 * 365)) .  '; path=/; domain=netingcn.com');

如果把domain、path放到expires前面,在firefox通过httpfox查看时,发现过期时间是“End Of Session”,但退出浏览器后重新打开,发现该cookie还是存在的,chrome显示的也是类似。虽说浏览器最终还是设置了一个一年过期的cookie,不过domain信息为当前页面的完整域,不是设置的顶级域。所以一定要注意顺序。

另外,如果用header的方式设置多个cookie,需要设置header的第二个参数为FALSE,下面是header函数的声明:

void header ( string string [, bool replace [, int http_response_code]] )

第二个参数replace 指明是替换掉前一条类似的标头还是增加一条相同类型的标头。默认为替换,但如果将其设为 FALSE 则可以强制发送多个同类标头。

分类: PHP 标签:

shell 字符串截取

2012年7月29日 没有评论

shell中截取字符串的方法有很多中,可以分为两大类。第一种获取特定的字符或字符串的左边或者右边的字字符串,java中实现需要先用indexOf来确定特定字符串的位置,然后再用substring来获取结果;第二种类似java中的substring。

第一种又可以分为四种情况,下面一一介绍。

1、使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。用法为#*substr,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str#*//}

得到的结果为www.netingcn.com/cut-string.html,即删除从左边开始到第一个"//"及其左边所有字符

2、使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。用法为##*substr,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str##*/}

得到的结果为cut-string.html,即删除最后出现的"/"及其左边所有字符

3、使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。用法为%substr*,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str%/*}

得到的结果为http://www.netingcn.com,即删除从右边开始到第一个"/"及其右边所有字符

4、使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。用法为%%substr*,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${str%%/*}

得到的结果为http://www.netingcn.com,即删除从右边开始到最后一个"/"及其右边所有字符

第二种也分为四种,分别介绍如下:

1、从左边第几个字符开始以及字符的个数,用法为:start:len,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:

2、从左边第几个字符开始一直到结束,用法为:start,例如:

str='http://www.netingcn.com/cut-string.html'

echo ${var:7}

其中的 7 表示左边第8个字符开始
结果是:www.netingcn.com/cut-string.html

3、从右边第几个字符开始以及字符的个数,用法:0-start:len,例如:

str='http://www.netingcn.com/cut-string.html'
echo ${str:0-15:10}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:cut-string

3、从右边第几个字符开始一直到结束,用法:0-start,例如:

str='http://www.netingcn.com/cut-string.html'
echo ${str:0-4}

其中的 0-6 表示右边算起第6个字符开始,10 表示字符的个数。
结果是:html

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

使用运算符 -= 的陷阱

2012年7月28日 没有评论

一般的编程语言中都提供了+=、-=这样的运算符,例如

var para = 1;
para = para + 4;
//等价于
para += 4;

//同样
para = para - 4;
//等价于
para -= 4;

我的编程习惯一直比较倾向后者,最近在写php代码时候发现了一个小陷阱,如下代码:

$cnt = 100;
$offset1 = 80;
$offset2 = 120;

$cnt -= $offset1 + $offset2;

我的原意是$cnt – $offset1 + $offset2,结果为140,但是真实的结果是-100。这也是典型运算符优先级导致的问题,原来 + 的优先级要高于 -=,所以自然结果就是-100了。经测试java、php、javascript、python都是这样。

使用 +=、-= 时如果超过两个操作数,一定要清楚到底在做什么,特别要注意运算符的优先级。

平时我是记不住那么多运算符的优先级顺序,在处理多个参数进行混合运算时都是祭出法宝,那就是使用括号来控制优先级。

分类: web前端 标签:

unable to load dynamic library memcached.so

2012年7月28日 1 条评论

通过源代码编译安装php的memcached扩展,一路顺利,最终生成了memcached.so,同时在php.ini中添加了extension=memcached.so,使用命令php -v查看时提示PHP Warning: PHP Startup: Unable to load dynamic library。以前在多台机器上安装扩展都是这么设置就可以,但是这台机器上就不行,后来发现是此机器的php.ini默认配置中使用了extension_dir,解决办法就是注释掉php.ini中的extension_dir配置。

关于memcached扩展的安装可以参看这里:http://www.netingcn.com/php-memcached.html

分类: PHP 标签:

无觅相关文章插件,快速提升流量