这个留言簿做出来有两个多月了,以前调用的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);
}