这个留言簿做出来有两个多月了,以前调用的XMLHTTP全是自己写的,一直测试正常,后来在多种环境和浏览器下测试才发现很不稳定,只有在册了什么DLL的IE和FireFox下才可以正常使用,JAVASCRIPT的函数我研究了好久,也参考了其它的源码好久,可是有时候写的就是一样,就是问题不断,怎么也找不到哪里错了,因为最近在学JQuery,发现JQuery的AJAX很强大,也很简单,而且兼容多浏览器,便把留言簿的AJAX函数全使用JQuery的代替了,于是也现出来给大家看看,呵呵。
这个留言簿做出来有两个多月了,以前调用的XMLHTTP全是自己写的,一直测试正常,后来在多种环境和浏览器下测试才发现很不稳定,只有在册了什么DLL的IE和FireFox下才可以正常使用,JAVASCRIPT的函数我研究了好久,也参考了其它的源码好久,可是有时候写的就是一样,就是问题不断,怎么也找不到哪里错了,因为最近在学JQuery,发现JQuery的AJAX很强大,也很简单,而且兼容多浏览器,便把留言簿的AJAX函数全使用JQuery的代替了,于是也现出来给大家看看,呵呵。
以前开发过一样的在VISTA侧边栏的电池小工具,因为身边的朋友喜欢用鱼鱼,特花了点时间做了一个鱼鱼下的小工具,还有各种各样的背景皮肤选择哦。
[attach=63] [attach=64] [attach=65]
[attach=66]
小工具默认使用的是“微软雅黑”字体,这样更美观,如果您的电脑上没有微软雅黑字体的话会很难看,建议从网上下载微软雅黑字体,当然如果您不喜欢装字体的话可以使用默认为“黑体”版的,您可以从鱼鱼的官方网站上下载。
下载:
» 微软雅黑版鱼鱼官网下载
» 雅黑版本地下载:[attach=213]
» 黑体版本站下载:[attach=67]
好久没更新博客了,连看奥运会的时候都没上过网,这次给大家带来一个 JavaScript 好东西,自己拿去玩吧...
去掉注释就这么点
想写几个通用的 AJAX 所用的函数,在写 postRequest() 这个函数的时候总是得不到返回值,后来才知道,用异步数据是不行的,得同步,记录下。。。
在此要感谢这篇文章 http://xujingbao.javaeye.com/blog/186050
下面的 writePostRequest() 函数因为不想脚本臃肿,就直接调用了 postRequest() 函数了,因为没有返回值可以用异步回调的方式,不过要另写整个函数,所以如果想看上去执行速度快一些的话就可以重写 writePostRequest() 函数用异步的方式。
另外一点就是如果 Post 数据的时候中文要编码,否则发送到服务器端会乱码,当然可以在服务器端转换编码,详情可以参考《PHP的unescape()函数》这篇文章。
JavaScript代码
var xmlHttp; var isie = false; function createXmlHttp(){ var theObject; if(window.ActiveXObject){ //Get xmlHttp theObject = new ActiveXObject("Microsoft.XMLHTTP"); //IE6及以上版本 isie = true; }else if(window.XMLHttpRequest){ theObject = new XMLHttpRequest(); }else{ alert("您的浏览器不支持XMLHTTP,页面无法创建对象,将会影响到页面的正常功能!"); } return theObject; } function getRequest(url){ //获取 GET 返回数据 xmlHttp = createXmlHttp(); try{ if(isie == false ){ xmlHttp.open("GET", url, false); xmlHttp.setRequestHeader("If-Modified-Since","0"); xmlHttp.overrideMimeType("text/html;charset=gb2312"); xmlHttp.send(null); return xmlHttp.responseText; }else{ xmlHttp.open("GET", url, false); xmlHttp.setRequestHeader("If-Modified-Since","0"); xmlHttp.send(null); if(xmlHttp.readyState == 4){ if(xmlHttp.status == 200 || xmlHttp.status == 0){ return Recenspace(xmlHttp.responseBody); } } } }catch(exception){ document.write('exception:'+exception.message); } } function postRequest(url,postString){ //获取 POST 返回数据 xmlHttp = createXmlHttp(); var returnText = null; xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState == 4 && xmlHttp.status == 200){ returnText = xmlHttp.responseText; } } xmlHttp.open("POST", url, false); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //xmlHttp.overrideMimeType("text/html;charset=gb2312"); xmlHttp.send(postString); return returnText; } function Recenspace(Html){ var rs=new ActiveXObject("ADODB.RecordSet"); rs.fields.append("a",201,1); rs.open(); rs.addNew(); rs(0).appendChunk(Html); rs.update(); return rs(0).value; rs.close(); } function writeGetRequest(url,element){ //写入 GET 返回值 document.getElementById(element).innerHTML = getRequest(url); } function writePostRequest(url,postString,element){ //写入 POST 返回值 document.getElementById(element).innerHTML = postRequest(url,postString); } function doIt(){ //无操作函数 }
昨天把自己的留言本后台回复改成AJAX无刷新的时候POST数据到服务器端中文总是乱码,郁闷的很~后来在网上查了一下才知道 JavaScript 用 XmlHTTP POST数据时中文是被当成 UTF-8 编码发送出去的,一个解决的方法是在客户端把中文用 JavaScript 的 escape() 函数编码了再到服务器端解码,可是在服务器端怎么解码呢,那就看下面一段我从网上找到的 PHP 中和 JavaScript 的 unescape() 函数功能一样的解码函数吧(这句话怎么听着有点别扭??)
PHP代码
function unescape($str){ $str = rawurldecode($str); preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v){ if(substr($v,0,2) == "%u"){ $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); }elseif(substr($v,0,3) == "&#x"){ $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); }elseif(substr($v,0,2) == "&#"){ $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1))); } } return join("",$ar); }