for(var key in Selects) { clearMenu(Selects[key]); } var Http = new ActiveXObject("Microsoft.XMLHTTP");//创建xmlhttp对象,用于收发数据到服务器短 var Dom = new ActiveXObject("Microsoft.XMLDOM");//创建xmldom对象,用于分析、获取服务器段传回的xml中的数据 var url=ServerURL; if( field ) url+="?value="+escape( str2unicode(Parent.item(parent_option).text) )+"&field="+field+"&"+"table="+Table; else url+="?parent="+Parent.item(parent_option).parent+"*"+Parent.item(parent_option).value+"&"+"table="+Table; //alert(url); //document.write(url); Http.open("GET",url,false); Http.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");//如果需要 get/post 中文参数到服务器,必须出现次行,否则服务器端出现编码错误。 Http.send();//发送查询信息 Dom.async=false //设置为同步方式获取数据 //alert(Http.responseText);
var Http = new ActiveXObject("Microsoft.XMLHTTP");//创建xmlhttp对象,用于收发数据到服务器短 var Dom = new ActiveXObject("Microsoft.XMLDOM");//创建xmldom对象,用于分析、获取服务器段传回的xml中的数据
除非改变http协议
要实现页面的内容更新,不刷新是不可能的
只是从技巧上实现前台页面内容的滚动
但是必须有“后台”页面的刷新
据说xml可以实现“推”数据的功能,但我不是很了解
希望有谁知道的解释一下
xmlhttp 的全称是: ms xmlhttp ,他是微软ie的标准,所以w3c 找不到下面给一个我以前做过的例子,实现全台湾全部 市/县/街道 的联动菜单,共6万多条记录,故不可以一次下载到客户端,当选中上级菜单的时候,不刷新 页面,利用 xmlhttp 请求服务器端的脚本,查询数据库,加载下级菜单
INSERT INTO city-road VALUES (2, '中正區', '0*1');
INSERT INTO city-road VALUES (3, '八德路一段', '0*1*2');
INSERT INTO city-road VALUES (4, '三元街', '0*1*2');
INSERT INTO city-road VALUES (5, '大埔街', '0*1*2');
INSERT INTO city-road VALUES (6, '中山北路一段', '0*1*2');
INSERT INTO city-road VALUES (7, '中山南路', '0*1*2');
INSERT INTO city-road VALUES (8, '中華路一段', '0*1*2');
INSERT INTO city-road VALUES (9, '中華路二段', '0*1*2');
INSERT INTO city-road VALUES (10, '丹陽街', '0*1*2');
INSERT INTO city-road VALUES (11, '仁愛路一段', '0*1*2');
INSERT INTO city-road VALUES (12, '仁愛路二段', '0*1*2');
INSERT INTO city-road VALUES (13, '公園路', '0*1*2');
INSERT INTO city-road VALUES (14, '天津街', '0*1*2');
INSERT INTO city-road VALUES (15, '水源路', '0*1*2');
INSERT INTO city-road VALUES (16, '北平西路', '0*1*2');
INSERT INTO city-road VALUES (17, '北平東路', '0*1*2');
INSERT INTO city-road VALUES (18, '市民大道一段', '0*1*2');
INSERT INTO city-road VALUES (19, '市民大道二段', '0*1*2');
INSERT INTO city-road VALUES (20, '永春街', '0*1*2');
INSERT INTO city-road VALUES (21, '永綏街', '0*1*2');
INSERT INTO city-road VALUES (22, '汀州路一段', '0*1*2');
INSERT INTO city-road VALUES (23, '汀州路二段', '0*1*2');
INSERT INTO city-road VALUES (24, '汀州路三段', '0*1*2');
INSERT INTO city-road VALUES (25, '同安街', '0*1*2');
INSERT INTO city-road VALUES (26, '自強市場第一棟', '0*1*2');
INSERT INTO city-road VALUES (27, '自強市場第二棟', '0*1*2');
INSERT INTO city-road VALUES (28, '自強市場第三棟', '0*1*2');
INSERT INTO city-road VALUES (29, '西陽街', '0*1*2');
INSERT INTO city-road VALUES (30, '西藏路', '0*1*2');
INSERT INTO city-road VALUES (31, '沅陵街', '0*1*2');
INSERT INTO city-road VALUES (32, '秀山街', '0*1*2');
INSERT INTO city-road VALUES (33, '辛亥路一段', '0*1*2');
INSERT INTO city-road VALUES (34, '和平西路一段', '0*1*2');
INSERT INTO city-road VALUES (35, '和平西路二段', '0*1*2');
INSERT INTO city-road VALUES (36, '延平南路', '0*1*2');
INSERT INTO city-road VALUES (37, '忠孝西路一段', '0*1*2');
INSERT INTO city-road VALUES (38, '忠孝東路一段', '0*1*2');
INSERT INTO city-road VALUES (39, '忠孝東路二段', '0*1*2');
INSERT INTO city-road VALUES (40, '杭州北路', '0*1*2');
INSERT INTO city-road VALUES (41, '杭州南路一段', '0*1*2');
INSERT INTO city-road VALUES (42, '杭州南路二段', '0*1*2');
INSERT INTO city-road VALUES (43, '林森北路', '0*1*2');
INSERT INTO city-road VALUES (44, '林森南路', '0*1*2');
INSERT INTO city-road VALUES (45, '武昌街一段', '0*1*2');
INSERT INTO city-road VALUES (46, '金山北路', '0*1*2');
INSERT INTO city-road VALUES (47, '金山南路一段', '0*1*2');
INSERT INTO city-road VALUES (48, '金門街', '0*1*2');
INSERT INTO city-road VALUES (49, '金華街', '0*1*2');
INSERT INTO city-road VALUES (50, '長沙街一段', '0*1*2');
INSERT INTO city-road VALUES (51, '青島西路', '0*1*2');
INSERT INTO city-road VALUES (52, '青島東路', '0*1*2');
INSERT INTO city-road VALUES (53, '信陽街', '0*1*2');
INSERT INTO city-road VALUES (54, '信義路一段', '0*1*2');
INSERT INTO city-road VALUES (55, '信義路二段', '0*1*2');
INSERT INTO city-road VALUES (56, '南昌路一段', '0*1*2');
INSERT INTO city-road VALUES (57, '南昌路二段', '0*1*2');
INSERT INTO city-road VALUES (58, '南海路', '0*1*2');
INSERT INTO city-road VALUES (59, '南陽街', '0*1*2');
INSERT INTO city-road VALUES (60, '思源街', '0*1*2');
INSERT INTO city-road VALUES (61, '泉州街', '0*1*2');
INSERT INTO city-road VALUES (62, '牯嶺街', '0*1*2');
INSERT INTO city-road VALUES (63, '重慶南路一段', '0*1*2');
INSERT INTO city-road VALUES (64, '重慶南路二段', '0*1*2');
INSERT INTO city-road VALUES (65, '重慶南路三段', '0*1*2');
INSERT INTO city-road VALUES (66, '師大路', '0*1*2');
INSERT INTO city-road VALUES (67, '徐州路', '0*1*2');
INSERT INTO city-road VALUES (68, '晉江街', '0*1*2');
INSERT INTO city-road VALUES (69, '桃源街', '0*1*2');
INSERT INTO city-road VALUES (70, '泰安街', '0*1*2');
INSERT INTO city-road VALUES (71, '基隆路四段', '0*1*2');
INSERT INTO city-road VALUES (72, '常德街', '0*1*2');
INSERT INTO city-road VALUES (73, '紹興北街', '0*1*2');
INSERT INTO city-road VALUES (74, '紹興南街', '0*1*2');
INSERT INTO city-road VALUES (75, '莒光路', '0*1*2');
INSERT INTO city-road VALUES (76, '許昌街', '0*1*2');
INSERT INTO city-road VALUES (77, '連雲街', '0*1*2');
INSERT INTO city-road VALUES (78, '凱達格蘭大道', '0*1*2');
INSERT INTO city-road VALUES (79, '博愛路', '0*1*2');
INSERT INTO city-road VALUES (80, '惠安街', '0*1*2');
INSERT INTO city-road VALUES (81, '湖口街', '0*1*2');
INSERT INTO city-road VALUES (82, '詔安街', '0*1*2');
INSERT INTO city-road VALUES (83, '貴陽街一段', '0*1*2');
INSERT INTO city-road VALUES (84, '開封街一段', '0*1*2');
INSERT INTO city-road VALUES (85, '廈門街', '0*1*2');
INSERT INTO city-road VALUES (86, '愛國西路', '0*1*2');
INSERT INTO city-road VALUES (87, '愛國東路', '0*1*2');
INSERT INTO city-road VALUES (88, '新生北路一段', '0*1*2');
INSERT INTO city-road VALUES (89, '新生南路一段', '0*1*2');
INSERT INTO city-road VALUES (90, '寧波西街', '0*1*2');
INSERT INTO city-road VALUES (91, '寧波東街', '0*1*2');
INSERT INTO city-road VALUES (92, '漳州街', '0*1*2');
INSERT INTO city-road VALUES (93, '漢口街一段', '0*1*2');
INSERT INTO city-road VALUES (94, '福州街', '0*1*2');
INSERT INTO city-road VALUES (95, '銅山街', '0*1*2');
INSERT INTO city-road VALUES (96, '齊東街', '0*1*2');
INSERT INTO city-road VALUES (97, '廣州街', '0*1*2');
INSERT INTO city-road VALUES (98, '潮州街', '0*1*2');
INSERT INTO city-road VALUES (99, '衡陽路', '0*1*2');
INSERT INTO city-road VALUES (100, '館前路', '0*1*2');
INSERT INTO city-road VALUES (102, '濟南路二段', '0*1*2');
INSERT INTO city-road VALUES (103, '臨沂街', '0*1*2');
INSERT INTO city-road VALUES (104, '襄陽路', '0*1*2');
INSERT INTO city-road VALUES (105, '鎮江街', '0*1*2');
INSERT INTO city-road VALUES (106, '懷寧街', '0*1*2');
INSERT INTO city-road VALUES (107, '羅斯福路一段', '0*1*2');
INSERT INTO city-road VALUES (108, '羅斯福路二段', '0*1*2');
INSERT INTO city-road VALUES (109, '羅斯福路三段', '0*1*2');
INSERT INTO city-road VALUES (110, '羅斯福路四段', '0*1*2');
INSERT INTO city-road VALUES (111, '寶慶路', '0*1*2');
INSERT INTO city-road VALUES (112, '大同區', '0*1');
INSERT INTO city-road VALUES (113, '大同街', '0*1*112');
INSERT INTO city-road VALUES (114, '大龍街', '0*1*112');
INSERT INTO city-road VALUES (115, '五原路', '0*1*112');
INSERT INTO city-road VALUES (116, '天水路', '0*1*112');
INSERT INTO city-road VALUES (117, '太原路', '0*1*112');
INSERT INTO city-road VALUES (118, '市民大道一段', '0*1*112');
INSERT INTO city-road VALUES (119, '平陽街', '0*1*112');
INSERT INTO city-road VALUES (120, '平陽路', '0*1*112');
INSERT INTO city-road VALUES (121, '民生西路', '0*1*112');
INSERT INTO city-road VALUES (122, '民族西路', '0*1*112');
INSERT INTO city-road VALUES (123, '民樂街', '0*1*112');
INSERT INTO city-road VALUES (124, '民權西路', '0*1*112');
INSERT INTO city-road VALUES (125, '永昌街', '0*1*112');
INSERT INTO city-road VALUES (126, '甘州街', '0*1*112');
INSERT INTO city-road VALUES (127, '甘谷街', '0*1*112');
INSERT INTO city-road VALUES (128, '伊寧街', '0*1*112');
INSERT INTO city-road VALUES (129, '安西街', '0*1*112');
INSERT INTO city-road VALUES (130, '西寧北路', '0*1*112');
INSERT INTO city-road VALUES (131, '赤峰街', '0*1*112');
INSERT INTO city-road VALUES (132, '延平北路一段', '0*1*112');
INSERT INTO city-road VALUES (133, '延平北路二段', '0*1*112');
INSERT INTO city-road VALUES (134, '延平北路三段', '0*1*112');
INSERT INTO city-road VALUES (135, '延平北路四段', '0*1*112');
INSERT INTO city-road VALUES (136, '忠孝西路二段', '0*1*112');
INSERT INTO city-road VALUES (137, '承德路一段', '0*1*112');
INSERT INTO city-road VALUES (138, '承德路二段', '0*1*112');
INSERT INTO city-road VALUES (139, '承德路三段', '0*1*112');
INSERT INTO city-road VALUES (140, '昌吉街', '0*1*112');
INSERT INTO city-road VALUES (141, '長安西路', '0*1*112');
INSERT INTO city-road VALUES (142, '保安街', '0*1*112');
INSERT INTO city-road VALUES (143, '南京西路', '0*1*112');
INSERT INTO city-road VALUES (144, '哈密街', '0*1*112');
INSERT INTO city-road VALUES (145, '迪化街一段', '0*1*112');
INSERT INTO city-road VALUES (146, '迪化街二段', '0*1*112');
INSERT INTO city-road VALUES (147, '重慶北路一段', '0*1*112');
INSERT INTO city-road VALUES (148, '重慶北路二段', '0*1*112');
INSERT INTO city-road VALUES (149, '重慶北路三段', '0*1*112');
INSERT INTO city-road VALUES (150, '庫倫街', '0*1*112');
INSERT INTO city-road VALUES (151, '酒泉街', '0*1*112');
INSERT INTO city-road VALUES (152, '涼州街', '0*1*112');
INSERT INTO city-road VALUES (153, '敦煌路', '0*1*112');
INSERT INTO city-road VALUES (154, '景化街', '0*1*112');
INSERT INTO city-road VALUES (155, '華亭街', '0*1*112');
INSERT INTO city-road VALUES (156, '華陰街', '0*1*112');
INSERT INTO city-road VALUES (157, '貴德街', '0*1*112');
INSERT INTO city-road VALUES (158, '塔城街', '0*1*112');
INSERT INTO city-road VALUES (159, '萬全街', '0*1*112');
INSERT INTO city-road VALUES (160, '寧夏路', '0*1*112');
INSERT INTO city-road VALUES (161, '撫順街', '0*1*112');
INSERT INTO city-road VALUES (162, '鄭州路', '0*1*112');
INSERT INTO city-road VALUES (163, '興城街', '0*1*112');
INSERT INTO city-road VALUES (164, '錦西街', '0*1*112');
INSERT INTO city-road VALUES (165, '環河北路一段', '0*1*112');
INSERT INTO city-road VALUES (166, '環河北路二段', '0*1*112');
INSERT INTO city-road VALUES (167, '歸綏街', '0*1*112');
INSERT INTO city-road VALUES (168, '雙連街', '0*1*112');
INSERT INTO city-road VALUES (169, '蘭州街', '0*1*112');
INSERT INTO city-road VALUES (170, '中山區', '0*1');
INSERT INTO city-road VALUES (171, '一江街', '0*1*170');
INSERT INTO city-road VALUES (172, '八德路二段', '0*1*170');
INSERT INTO city-road VALUES (173, '大佳街', '0*1*170');
INSERT INTO city-road VALUES (174, '大直街', '0*1*170');
INSERT INTO city-road VALUES (175, '中山北路一段', '0*1*170');
INSERT INTO city-road VALUES (176, '中山北路二段', '0*1*170');
INSERT INTO city-road VALUES (177, '中山北路三段', '0*1*170');
INSERT INTO city-road VALUES (178, '中山北路四段', '0*1*170');
INSERT INTO city-road VALUES (179, '中原街', '0*1*170');
INSERT INTO city-road VALUES (180, '五常街', '0*1*170');
INSERT INTO city-road VALUES (181, '天津街', '0*1*170');
INSERT INTO city-road VALUES (182, '天祥路', '0*1*170');
INSERT INTO city-road VALUES (183, '北安路', '0*1*170');
INSERT INTO city-road VALUES (184, '四平街', '0*1*170');
INSERT INTO city-road VALUES (185, '市民大道二段', '0*1*170');
INSERT INTO city-road VALUES (186, '市民大道三段', '0*1*170');
INSERT INTO city-road VALUES (187, '民生西路', '0*1*170');
INSERT INTO city-road VALUES (188, '民生東路一段', '0*1*170');
INSERT INTO city-road VALUES (189, '民生東路二段', '0*1*170');
INSERT INTO city-road VALUES (190, '民生東路三段', '0*1*170');
INSERT INTO city-road VALUES (191, '民族西路', '0*1*170');
INSERT INTO city-road VALUES (192, '民族東路', '0*1*170');
INSERT INTO city-road VALUES (193, '民權西路', '0*1*170');
INSERT INTO city-road VALUES (194, '民權東路一段', '0*1*170');
INSERT INTO city-road VALUES (195, '民權東路二段', '0*1*170');
INSERT INTO city-road VALUES (196, '民權東路三段', '0*1*170');
INSERT INTO city-road VALUES (197, '玉門街', '0*1*170');
INSERT INTO city-road VALUES (198, '伊通街', '0*1*170');
INSERT INTO city-road VALUES (199, '吉林路', '0*1*170');
INSERT INTO city-road VALUES (200, '合江街', '0*1*170');
#############################################
#
# 利用 xmlhttp 实现的无限级 联动菜单
#
# [email protected]
#
#############################################一共只有两个主要函数,一个全局变量。
假设页面里有多个联动菜单,
Initialize函数用于初始化 页面中各个联动菜单的 一级菜单,
getOption 函数用于在某一级菜单被选择时,装载他的下级菜单。
ServerURL 变量用于记录查询请求提交的地址。*/
// ServerURL 在服务器端负责数据查询的程序的地址。所有查询请求将提交到该地址。
var ServerURL="../link-query.php";
/*
函数 str2unicode
将字符串以转换成 unicode ,并插入分隔符。
*/
function str2unicode(str)
{
var strRtn="";
var separator="z"; //file:用z作分隔符 for (var i=0;i<str.length;i++)
{
strRtn+=str.charCodeAt(i);
if (i<str.length-1) strRtn+=separator;
}
return strRtn;
}/*
函数 clearMenu清空一个菜单
第一个参数是菜单
*/
function clearMenu(menu,startIndex)
{
if(!startIndex)
startIndex=1;
for (index=menu.length-1;index>=startIndex;index--)
{
//alert("删除原菜单第"+(index+2)+"项");
menu.options[index]=null;//删除下级菜单中原有的选项,前一次装载的数据需要清空
}
}
/*函数 getOption菜单选项的查询和装载
参数说明:
Parent 上级菜单(select 对象),
Select_name 所有下级菜单(数组,元素为 select 对象),数组中的第一个菜单,会根据 Parent 所选择的内容,被装载,其余的清空。
*/
function getOption(Parent,Selects,Table,field)
{
parent_option=Parent.selectedIndex;//上级菜单选中的项的序号
theForm=Parent.form;
parentKay=null;
if(!Table)
Table=Parent.item(parent_option).table;
for(key=0;key<theForm.length;key++)
{
if( theForm[key]==Parent )
{
parentKay=key;
break;
}
else
continue;
} // 获得 Parent 在form中的key for(var key in Selects)
{
if(typeof(Selects[key])=="object")
continue;
else if( (typeof(Selects[key])=="string") && (result=Selects[key].match(/^([\-\+])(\d)+$/)) )
{
if(result[1]=="+")
curentKey=parentKay+eval(result[2]);
else if(result[1]=="-")
curentKey=parentKay-eval(result[2]);
else
return false; Selects[key]=theForm[curentKey];
}
else
return false;
} //将全部“-2”类型的参数转换横实际对象
Select=Selects[0];
for(var key in Selects)
{
clearMenu(Selects[key]);
} var Http = new ActiveXObject("Microsoft.XMLHTTP");//创建xmlhttp对象,用于收发数据到服务器短
var Dom = new ActiveXObject("Microsoft.XMLDOM");//创建xmldom对象,用于分析、获取服务器段传回的xml中的数据
var url=ServerURL;
if( field )
url+="?value="+escape( str2unicode(Parent.item(parent_option).text) )+"&field="+field+"&"+"table="+Table;
else
url+="?parent="+Parent.item(parent_option).parent+"*"+Parent.item(parent_option).value+"&"+"table="+Table;
//alert(url);
//document.write(url);
Http.open("GET",url,false);
Http.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");//如果需要 get/post 中文参数到服务器,必须出现次行,否则服务器端出现编码错误。
Http.send();//发送查询信息
Dom.async=false //设置为同步方式获取数据
//alert(Http.responseText);
//从服务器端传回的xml信息中,获取数据
Dom.loadXML(Http.responseText);
Item = Dom.getElementsByTagName("item");
itemID = Dom.getElementsByTagName("id");
itemName = Dom.getElementsByTagName("name");
itemParent = Dom.getElementsByTagName("parent");
//alert("获取: "+Item.length+"个新的对象");
for(key=0;key<Item.length;key++)//装载新获取的数据到下级菜单
{
index=key+1;
//alert(itemID[key].text+itemName[key].text+"("+key+":"+Item.length+")");
tempoption=new Option(itemName[key].text,itemID[key].text);
Select.options[index]=tempoption;
Select.options[index].parent=itemParent[key].text;
Select.options[index].table=Table;
Select.options[index].value=itemID[key].text;
}
}/*函数 Initialize菜单的初始化
可以一次初始化多个菜单,用数组将联动菜单的第一级菜单 的name,以及所在form传递给本函数。
参数说明:
Menus 需要初始化的菜单(数组,元素为完整的表单对象);
Table 服务器短 数据库里对应的表(字符串)。Initialize函数 访问服务器的数据库,到由 Table 参数所指定的数据表里 获取数据,装载到 数组参数 P 所指定的各个菜单里。
*/
function Initialize(Menus,Table)//初始化第一个关联菜单
{
var url=ServerURL+"?table="+Table+"&parent=0";
//document.write("<br>"+url);
var Http = new ActiveXObject("Microsoft.XMLHTTP");//创建xmlhttp对象,用于收发数据到服务器短
var Dom = new ActiveXObject("Microsoft.XMLDOM");//创建xmldom对象,用于分析、获取服务器段传回的xml中的数据
Http.open("GET",url,false);
Http.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");//如果需要 get/post 中文参数到服务器,必须出现次行,否则服务器端出现编码错误。
Http.send();//发送查询信息
Dom.async=false //设置为同步方式获取数据
Dom.loadXML(Http.responseText);
Item = Dom.getElementsByTagName("item");
itemID = Dom.getElementsByTagName("id");
itemName = Dom.getElementsByTagName("name");
itemParent = Dom.getElementsByTagName("parent");
//document.write("<br>"+"对象:"+Item.length+" name节点:"+itemName.length+" id节点:"+itemID+" parent节点:"+itemParent.length);
for(var key=0;key<Item.length;key++)//装载新获取的数据到下级菜单
{
index=key+1;
for(var menu in Menus)
{
tempoption=new Option(itemName[key].text,itemID[key].text);
Menus[menu].options[index]=tempoption;
Menus[menu].options[index].parent=itemParent[key].text;
Menus[menu].options[index].table=Table;
Menus[menu].options[index].value=itemID[key].text;
}
}
}
<?
include "conf/config.php";$db =mysql_connect($dbhost,$dbuser,$dbpwd);
$e_db =mysql_select_db($dbname,$db);
function point($num,$wei)
{
$d=10*$wei;
return round($num*$d)/$d;
}
function Mt()
{
$arr=explode(" ",microtime());
return $arr[1]+$arr[0];
}
function run_time()
{
$time=Mt(); global $runtime;
if(!isset($runtime))
$runtime=array($time,0,0);
else
{
$alltime=doubleval($time)-doubleval($runtime[0]);
$neartime=$time-$runtime[count($runtime)-3]; $runtime[]=$time;
$runtime[]=$alltime;
$runtime[]=$neartime;
} return point($runtime[count($runtime)-2],5)."秒 ".point($runtime[count($runtime)-1],5)."秒<br>\n";
}/*
函数 u2utf8
将一个 unicode 编码的字符,转换成utf8
js 传递来的中文参数,传递前首先转换成unicode,接受到后,再通过此函数还原
*/
function u2utf8($c) {
$str='';
if ($c < 0x80) {
$str.=$c;
}
else if ($c < 0x800) {
$str.=chr(0xC0 | $c>>6);
$str.=chr(0x80 | $c & 0x3F);
}
else if ($c < 0x10000) {
$str.=chr(0xE0 | $c>>12);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
else if ($c < 0x200000) {
$str.=chr(0xF0 | $c>>18);
$str.=chr(0x80 | $c>>12 & 0x3F);
$str.=chr(0x80 | $c>>6 & 0x3F);
$str.=chr(0x80 | $c & 0x3F);
}
return $str;
}if(isset($_GET["show_runtime"])&&$_GET["show_runtime"])
run_time();##### START ################
$table=$_GET["table"];
$out="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$out.="<root>\n";
if( isset($_GET["field"]) )
{
$realchar=array();
$chars=explode("z",$_GET["value"]);
foreach($chars as $char)
$realchar[]=u2utf8($char);
$value=implode("",$realchar);
$sql="select parent,id from `$table` where `".$_GET["field"]."`='$value'";
$r=mysql_query($sql);
$rr=mysql_fetch_assoc($r);
$parent=$rr["parent"]."*".$rr["id"];
}
else if( isset($_GET["parent"])&&(!empty($_GET["parent"])) )
$parent=$_GET["parent"];
else
$parent=0;
$sql="select id,name,parent from `$table` where parent='$parent'";
$result=mysql_query($sql);
//echo mysql_error();while($arr=mysql_fetch_array($result))
{
$out.="<item>\n";
$out.="<name>";
$out.=$arr["name"];
$out.="</name>\n";
$out.="<id>";
$out.=$arr["id"];
$out.="</id>\n";
$out.="<parent>";
$out.=$arr["parent"];
$out.="</parent>\n";
$out.="</item>\n";
}echo $out.="</root>";######## END ####################
if(isset($_GET["show_runtime"])&&$_GET["show_runtime"])
{
run_time();
echo $runtime[count($runtime)-2];
}
?>
縣市:
<select name="city" id="city" onChange="with(document.theform)getOption(this,new Array(town,road),'city-road')" >
<option>请选择</option>
<option table={table} parent=0 value=1>台北市</option>
<option table={table} parent=0 value=937>台北縣</option>
<option table={table} parent=0 value=3409>基隆市</option>
<option table={table} parent=0 value=3643>桃園縣</option>
<option table={table} parent=0 value=6677>新竹市</option>
<option table={table} parent=0 value=7815>新竹縣</option>
<option table={table} parent=0 value=8782>苗栗縣</option>
</select>
鄉鎮區市:
<select name="town" id="town" onChange="getOption(this,new Array(document.theform.road),'city-road')">
<option>请选择</option>
</select>
詳細地址:
<select name="road" class="input" id="road" 詳細地址ALL="select,物件區域/詳細地址,1,1,0">
<option>请选择</option>
</select>
</form>
// 强悍~~~~~~~~~~~~~~~
//
// 不过我听说早在年前就有国外的高手用BUFFER实现聊天室的无刷新
//
// 不过我一直没找到这样的文章
//
// 有高手知道吗
//
这个不难,国内也有人写:
http://www.baidu.com/s?wd=XMLHTTP+%C1%C4%CC%EC%CA%D2&cl=3
不知道xmlhttp其它浏览器对它的支持如何?
-----------------------
另:找到一篇关于这方面技术的文章,和大家分享一下
http://dev.csdn.net/article/20/article/64/64246.shtm
但是 腾迅、MyIE 这些引用ie内核的浏览器支持。就是说只有微软家族的 支持 MS xmlHttp
------------------------------------------------
嵌入一个不可见祯,更换地址的时候提交给此祯,祯返回js代码更新父页面即可,这样就看不到刷新了
Netscape下用server push就可以了。
<frame src="http://127.0.0.1:9999/?param1=param1value¶m2=param2value" scrolling="yes" noresize marginwidth="0" marginheight="0">9999端口可以用 php(或者其它语言) 写一个 service 不断写内容,不要断开连线.
建议用 java 或者其它语言写 server 端. 因为同时有多个 socket 连线, php 处理很麻烦.
一下找不到源码了.等我找找看.
纯PHP?????????????????????????????
谁能实现,给我看看?
里面有一部分是无刷新的聊天室.
我们要讨论的聊天室非常简单,只是一个原理上的实现。
它是一个 client/server 结构的程序, 首先启动 server, 然后用户使用 client 进行连接. client/server 结构的优点是速度快, 缺点是当 server 进行更新时, client 也必需更新. 初始化 server, 使server 进入监听状态: (以下只是实现原理,并不涉及具体程序) $socket = socket( AF_INET,SOCK_STREAM, 0);
// 首先建立一个 socket, 族为 AF_INET, 类型为 SOCK_STREAM.
// AF_INET = ARPA Internet protocols 即使用 TCP/IP 协议族
// SOCK_STREAM 类型提供了顺序的, 可靠的, 基于字节流的全双工连接.
// 由于该协议族中只有一个协议, 因此第三个参数为 0
bind ($sock, $address, $port)
// 再将这个 socket 与某个地址进行绑定. listen( sockfd, MAX_CLIENT)
// 地址绑定之后, server 进入监听状态.
// MAX_CLIENT 是可以同时建立连接的 client 总数. server 进入 listen 状态后, 等待 client 建立连接。 Client端要建立连接首先也需要初始化连接: $socket= socket( AF_INET,SOCK_STREAM,0))
// 同样的, client 也先建立一个 socket, 其参数与 server 相同. connect ($socket, $address, $service_port)
// client 使用 connect 建立一个连接. 当 client 建立新连接的请求被送到Server端时, server 使用 accept 来接受该连接: accept_connect($sock)
// accept 返回一个新的文件描述符. 在 server 进入 listen 状态之后, 由于可能有多个用户请求连接,所以程序需要同时对这些用户进行操作,并在它们之间实现信息交换。这在实现上称为I/O多路复用技术。
I/O多路复用技术的方法就不是本文所要叙述的内容了,如有兴趣请参考相关书籍。
--------------------------------------------------------------------------------------
找来的资料,不知对你有没有用
function refreshing(){
doucument.img1.src = "img.jpg";//加载图片名称
setTimeout("refreshImg()",1000);//1000为刷新时间。合1秒。必须保证此时间内能够完成图片的加载。如果图片比较大。可以适当延长。
}
/*这里jmg.jpg是不断加载变化的。我没试过存别的可以不。我觉得应该有点启发*/