网页里制作升级进度条 我现在在c语言里知道我自己的升级进度,如何将该进度信息在网页中以进度条的形式显示出来最好是用js获取我c中的进度信息。然后显示出来;就是c和js间等的数据交互的问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试看,思路,如果你的C中不断有当前进度进行输出,那可以在页面中不断调用JS函数读取该输出变量,然后调整进度条, c我倒是不会,不过进度条的效果我这边收藏有一个,你可以参考下http://www.scriptlover.com/controls/SliderProgress/下载:http://www.scriptlover.com/agent/?url=/controls/SliderProgress.rar.gzhttp://www.scriptlover.com/controls/main.html 给你个思路1.C和JS通信 可以用XML来解决,这个就不详细讲了2.进度条,使用CSS百分比做,比如:<div id="warp" style="width:100px;height:10px;border:1px solid #eee;background:#000;overflow:hidden"><!--#warp用以包裹'进度'以及显示这个进度条--><div id="point" style="width:90%;background:#44a;height:10px;"></div><!--#point利用百分比控制实现和进度条一直的效果,后面需要的是利用JS做width的值的赋值操作--></div> 问题是怎么用js读取c中的数据?我也是这那样做过,但我没办法读c中的数据,用文件的形式将c的进度信息写进txt中 然后用js读的时候,我的浏览器是Firefox的 不支持ActiveXObject。如果把进度写进数据库,我还不会用js去读,也就是现在没有个读c中数据的好办法 CGI? XMLHttpRequest不行吗? 进度条我都做了很多个 多种多样的,问题就是c和js的通信,我以前也没接触过js,html,xml。完全不懂,网上找了好久也没找到c和js间的通信,自己想用文件的形式通信都是浏览器不支持ActiveXObject。现在是彻底没办法了。 我本来只是做c语言的,刚毕业,在做嵌入式开发,公司要用网页实现控制设备,都是c写的代码,甚至连html都是用c一句一句写进去的,我现在唯一的就是在c中知道升级进度信息,然后随便用什么方法只要能在网页中显示进度信息就行,关键是我现在只会c,js和html也是最近做这个菜稍微了解,其他就不懂了。以下是我写网页html或js的部分代码websWrite(wp,T("<html>\n")); websWrite(wp,T("<head>\n")); websWrite(wp,T("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n")); websWrite(wp,T("<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">\n")); websWrite(wp,T("<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">\n")); websWrite(wp,T("<script language=\"JavaScript\" type=\"text/JavaScript\" src=\"/home/httpd/cgi-bin/myfreetemplates.js\"></script>\n")); websWrite(wp,T("<link href=\"/home/httpd/cgi-bin/myfreetemplates.css\" rel=\"stylesheet\" type=\"text/css\">\n")); websWrite(wp,T("</head>\n")); 感谢三楼的收藏,但我们公司只能上csdn,不过没有c的也不行,进度条效果我也做了很多,就是不知道这么和c间通信 C可以在服务器端生成个XML文件,客户端从中异步获取总时间,JS得到时间后,做个动画就OK 我试着做过,我设备里没有支持xml的头文件。最好能给出关键部分的源码; 我原来这样做过:在windows下模拟可以读出进度信息,但移植到设备中就不支持ActiveXObject。 我的设备的系统是linux的,服务器是goahead,脚本用的cgi,不知道为什么不支持ActiveXObject; 我的模拟想法是用c做个线程写进度信息到txt文件中,用js再去读信息,显示出来:以下是代码:/*** test.c ****/#include<stdio.h>#include<string.h>int main(){ FILE *fp; char str[8]; int i=0; for(i=0;i<=100;i++) { if(i==99) { i=0; } memset(str,0,sizeof(str)); sprintf(str,"%d",i); if((fp=fopen("12.txt","w"))==NULL)/*打开只写的文本文件*/ { printf("can not open file!"); return 0; } fputs(str,fp);/*写入串*/ fclose(fp);/*关文件*/ sleep(2); }}/****** jindu.html *******/<form name=loading> <p align=center> <font color="#0066ff" size="2" face="Arial">载入中,请稍等... <input type=text name=chart size=46 style="font-family:Arial; font-weight:bolder; color:#0066ff; background-color:#fef4d9; padding:0px; border-style:none;"> <input type=text name=percent size=47 style="color:#0066ff; text-align:center; border-style:none;"><script> var bar=0 function readFile(filename){ var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.OpenTextFile(filename,1); while (!f.AtEndOfStream)s = f.ReadLine();f.Close(); var i=s; j=parseInt(i);return j;}count() function count(){ bar=readFile('Z:/home/zhang/mytest/readwrite/12.txt'); document.loading.percent.value=bar+"%" if (bar<100) { setTimeout("count()",300); } //else //{// window.location = "http://www.alixixi.com";//} }</script> </p></form>模拟成功,模拟时为了简单没做动画,但百分比完全正确!! 不知道哪位高手知道在我这样的设备上能用js读txt文件的方法 我设备的芯片用的arm920t 系统好像是Linux2.6.10的,服务器移植的goahead,脚本解释器是cgi,上面jindu.html移植到设备中时报错的时候就在readFile的var fso = new ActiveXObject("Scripting.FileSystemObject");这一行,报错:Automation服务器不能创建对象。其他还有没有错我都不知道。 我看了很多网上的说法都说ActiveXObject只与浏览器有关,我去Firefox浏览器模拟的时候确实不行,在windows下用IE浏览器模拟的时候正常,就是移植到我设备才出现:Automation服务器不能创建对象。 我现在也搞不懂上面原因了,可能是服务器或是cgi的原因? 高手出来指点一下 想了一下,应该可以这样做:1,首先C程序完成主要工作,同时不断地在某个地方输出完成的当前进度值并写进一个文件,这个文件可以保存在server上,以方便后面的client端函数访问,这个文件可以是 .txt(建议使用),或.xml或.html 文件,根据情况设定,文件内容可能就是一个很简单的当前进度值;2,在client端建立一个AJAX函数,函数里面读取放在server上的.txt文件的内容,根据返回值不断修改进度条,然后不断调用该函数读去.txt的内容,即可实现动态效果,AJAX的建立可不受ActiveXObject的限制,在MS ,FF IE应该都可以用;整个过程就用中间的 .txt文件把C和JS两个程序联系起来:C程序 ---(不断输出当前进度值,并写入文件)--->txtFile.txt--->(web页)JS程序读取.txt文件内容,显示进度|<..........................Server端......................>|<.........Client端.................>| 我今年刚刚电子专业毕业,对这个从来没接触过,不懂的,只学过c和Linux系统的一点东西。上面js在windows下用ActiveXObject读文件也是网上搜索了好久才做出来的,但在设备上不能用。 你的想法和我一样,我就是在js中卡在ActiveXObject上读不出数据。 高手能不能晒出一点AJAX函数读txt文件的代码参考? <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><script language="javascript">var bar=0;var line="||";var amount="||";function count(){ bar=bar+2; amount=amount+line; document.loading.chart.value=amount; document.loading.percent.value=bar+"%"; if(bar<=100) { setTimeout("count()",100); }else { window.location="success.html"; }}</script></head><body onload="count()"><form name="loading"><p>正在页面载入。请稍等<br /><input type="text" name="chart" size="46" style="font-family:Arial, Helvetica, sans-serif; font-weight:bolder; color:#666633; background-color:#ffffff; padding:0px; border-style:none;" /><br><input type="text" name="percent" size="46" style="font-family:Arial, Helvetica, sans-serif; color:#0000FF; text-align:center; border-width:medium; border-style:none" /></form></body></html>代码也不怎么好啊! 我只是个非常菜的菜鸟,做了个多星期都不知道浏览器能检错,后来才发现浏览器一直在给我报错就是上面说的automation的错误,一个多星期才发现那个错误,后来公司对设备的要求,很久又没做了,现在又要做进度条,把旧问题拿出来,我还是只想出以文件的形式交互数据,想了几天,查了几天资料也没有上面进展,希望各位高手出来帮个忙,指条思路或是在我的思路上做出来都行。 高手做出来将感激不尽,也当多学习了 看看这个高效率的AJAX函数...<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><style type="text/css">*{font-family:verdana; font-size:12px;}div{border:1px solid red; padding:2px;}</style><script type="text/javascript">function $(id){return "string" == typeof(id) ? document.getElementById(id) : id ;}function createXMLHttp(){var xmlhttp;if(window.XMLHttpRequest){ try{ xmlhttp=new XMLHttpRequest(); }catch(e1){} }if (!xmlhttp && window.ActiveXObject){ var activeXNameList=new Array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"); for(var i=0;i<activeXNameList.length;i++){ try{ xmlhttp=new ActiveXObject(activeXNameList[i]); }catch(e2){ continue; } if(xmlhttp) break; }}if(xmlhttp)return xmlhttp;elsealert("Can not create XMLHttpRequest, maybe need to update your browser to new version.");}var objXMLHttp=null;function getInfo(){var goURL="http://www.xx.com/path/xFile.txt"; //根据你的情况设顶if(!objXMLHttp) objXMLHttp=createXMLHttp();objXMLHttp.open("GET",goURL,true);//objXMLHttp.onreadystatechange=CallBackFun; //可以指定外部函数CallBackFun为返回处理函数objXMLHttp.onreadystatechange=function(){ //这里直接给出 if(objXMLHttp.readyState==4){ if(objXMLHttp.status==200){ var r=objXMLHttp.responseText; $("revalue").innerHTML=r; alert("返回结果值: "+r); //...do something here.... } } };objXMLHttp.send(null);}//你可能不断的条调用这个getInfo函数,如下://var timer=setInterval("getInfo()",10); </script><body><div id="revalue"> </div><a href="javascript:getInfo();">TEST Get Info </a></body></html>试看,... 点击TEST Get Info打印出我的文件中的数据? 以下是我修改后的,修改的地方注释了,点击都一点反应也没有<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><style type="text/css">*{font-family:verdana; font-size:12px;}div{border:1px solid red; padding:2px;}</style><script type="text/javascript">function $(id){return "string" == typeof(id) ? document.getElementById(id) : id ;}function createXMLHttp(){var xmlhttp;if(window.XMLHttpRequest){ try{ xmlhttp=new XMLHttpRequest(); }catch(e1){} }if (!xmlhttp && window.ActiveXObject){ var activeXNameList=new Array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"); for(var i=0;i<activeXNameList.length;i++){ try{ xmlhttp=new ActiveXObject(activeXNameList[i]); }catch(e2){ continue; } if(xmlhttp) break; }}if(xmlhttp)return xmlhttp;elsealert("Can not create XMLHttpRequest, maybe need to update your browser to new version.");}var objXMLHttp=null;function getInfo(){var goURL="Z:/home/zhang/mytest/readwrite/12.txt"; //我修改的地方,这是我上面贴出的用过可以读出数据的文件if(!objXMLHttp) objXMLHttp=createXMLHttp();objXMLHttp.open("GET",goURL,true);//objXMLHttp.onreadystatechange=CallBackFun; //可以指定外部函数CallBackFun为返回处理函数objXMLHttp.onreadystatechange=function(){ //这里直接给出 if(objXMLHttp.readyState==4){ if(objXMLHttp.status==200){ var r=objXMLHttp.responseText; $("revalue").innerHTML=r; alert("返回结果值: "+r); //...do something here.... } } };objXMLHttp.send(null);}//你可能不断的条调用这个getInfo函数,如下://var timer=setInterval("getInfo()",10); </script><body><div id="revalue"> </div><a href="javascript:getInfo();">TEST Get Info </a></body></html> <html xmlns="http://www.w3.org/1999/xhtml" ><head><title>标题页</title></head><body><table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="2" rowspan="2"></td> <td width="2" height="2"></td> <td height="2" bgcolor="#cccccc"></td> <td width="2"></td> <td width="2" rowspan="2"></td> </tr> <tr> <td width="2" height="2" bgcolor="#cccccc"></td> <td height="2"></td> <td width="2" bgcolor="#cccccc"></td> </tr> <tr> <td width="2" bgcolor="#cccccc"></td> <td width="2" height="2"></td> <td width="120 height="0"><marquee direction="right" scrollamount= "10"><table style="font-size:1px;width:50px;height:10px;"><tr><td bgcolor="#e5fee5"></td><td bgcolor="#cbcdaf"></td><td bgcolor= "#8abf9a"> </td></tr></table></marquee></td> <td width="2" height="2"></td> <td width="2" bgcolor="#cccccc"></td> </tr> <tr> <td rowspan="2"></td> <td height="2" bgcolor="#cccccc"></td> <td height="2"></td> <td bgcolor="#cccccc"></td> <td rowspan="2"></td> </tr> <tr> <td height="2"></td> <td height="2" bgcolor="#cccccc"></td> <td></td> </tr></table></body></html> 我感觉你还是没有理解前面15L 我写的整个过程就用中间的 .txt文件把C和JS两个程序联系起来:C程序 ---(不断输出当前进度值,并写入文件)--->txtFile.txt--->(web页)JS程序读取.txt文件内容,显示进度|<..........................Server端......................>|<.........Client端.................>|红色部分是 server 端, 兰色部分是client端 , 这里你需要理解B/S模型工作方式var goURL="Z:/home/zhang/mytest/readwrite/12.txt"; //我修改的地方,这是我上面贴出的用过可以读出数据的文件你的12.txt文件应该放在 SERVER 端上,goURL 的值应该是 以http://形式为开始给出的URL 极端容易的问题,怎么搞这么多楼都没有解决吗?(后面的回复我就没功夫看了,不知有没有讲到的).1.C和JS的通讯这个只需要用C生成一个JS文件就可以了,内容如下:var 变量名称=数据值;这样就OK!! 然后在你要用的页面里,在<head></head>中<script id="脚本ID" src="那个js.js"></script>这样,你就把那个变量读进来了.在下面的JS里就可以直接使用那个 变量名称.2.至于不断更新同步数据.可以用定时器去更改脚本ID的src(页面禁止缓存,最好给JS加时间戳),也可以AJAX去读. 不好意思 那天下班了,我就在我的设备上随便读的一个盘上的文件 ,没做到设备的服务器上去,我知道你的意思,就是不知道为什么一定要放到服务器上去才能读出来,就随便创建的一个txt文件放在我的硬盘上的就读不出来?不都是读文件?我还很菜,不了解其中的原因,就在我的Windows下读了。 上班去公司在server上读了试试 高手能不能给点代码,我三个星期前都没听过js和AJAX,比如我现在要读c语言的变量float Curprogress;我有个线程不断的对Curprogress写数据 ,请问你在js里怎么读出来,能用js的话最好用js,我这几个星期稍微才对js了解一点点,对AJAX根本不知道,简单的话,能不能给点代码, 代码??我的方法就是最适合你的,几乎没什么太多新概念,没什么你写不出来的代码.必要的代码,我其实都给你写出来了,你有没有认真看和想呢?用C写文件,会吧?打开,写入,关闭.只不过,你写的这个文件,起名成"A.JS",它的内容就象我已经给你写的代码:"var B=Curprogress的值;"这样就OK!! 然后在你要用的页面里,在<head></head>中<script id="脚本ID" src="A.js"></script>在页面下面的JS里就可以直接使用这个变量了.<script>alert(B);</script> 这就显示出你那个Curprogress了!既然你现在做网页开发,建议买本好书好好学学JS.或者,公司应该有专门的前台脚本工程师,这个任务应该让他也参与提供方法,你们之间找到彼此都易行的协作方式.否则,按你现在这样问所显示出来的状况,很不乐观. 仅仅对它写数据当然没用,读不了.要读,你就在这个线程里存成上面我说的JS,然后再后面那样,这是最简便的方法.除此之外,还可以写入服务器的SESSION中或者XML,或者数据库.但是通过C来写入与客户端对应的SESSION,和XML,都远没有上面那么简便.数据库的话,存取性能也要差些.所以,综合考虑,就是我说的了. 直接做个activex放页面里面吧。 我在线程里改变了Curprogress的值,并在js文件里显示是不断变化的值,可是我在网页中打开时只是显示刚打开网页时的值,甚至连刷新那个值也不会变化,必须关掉重新打开网页,值才变化。 以前在windows下模拟的时候,用的ActiveXObject创建对象读.txt文件时,主动刷新还能读出数据,只是我的Linux系统或是Firefox浏览器不支持ActiveXObject。 还真是蛋疼的了,公司就我一个人做网页,都没其他人做了,而且这个项目做完我也不做网页了,就只是在网上找东西东拼西凑的,然后周末去看看html,革命开始不久,html还在了解中,项目就要近尾声了 楼上已经说了很多了,我的系统貌似不支持activex,运行到activex的时候总是automation的错误,我在windows下模拟用的就是activex,很不错。 系统部支持,也没用的了。。 面对一个不知道ajax的同学真的很困难. lz加油. 用ajax请求发送到服务端, 服务端只需要传两个值(当前/最大经验), 剩下的在html上显示lz都会了吧.好, lz只需用会ajax, 就完全可以解决了. ajax发送一个请求到一个地方, 你用C在这个地方监听, 收到此消息即从你的C中返回那两个值. html显示就可以了 就像你说的 面对一个不知道ajax的同学真的很困难.ajax发送一个请求到一个地方, 这个地方怎么弄?你用C在这个地方监听,我怎么找到这个地方,要是两种语言能找到一个共同的地方我就实现数据交互了,ajax不懂 ,不知道怎么弄的。 我加到服务器上去了,错误也没提示,页面一点也没动,空页面,和原来一样,不管URL写成什么样,连页面都没了 控制样式颜色宽度百分比,那个简单啊,早出来了,上面已经贴了几个那样的代码,关键是那个百分比要能是我c语言中的百分比,怎么实现将c语言中的数据传到样式百分比中,那种颜色的我不需要都行,只要能显示各数字,变化的数字,与c语言中百分比同步变化的数字就ok JavaScript问题求助 如何实现一个按钮,先后提交两个表单数据(先提交第二个表单,再提交第一个表单)? js如何读取infopath表单生成的页面数据 如何在网页上实现 几个图片拖动到一起,然后生成一个图片 如何用JS获取正则表达式匹配的命中次数 请问:如何得到当前网页的文件大小呢? 求一个检测邮件地址拼写的函数? 新人初学jquery,在函数调用上遇到点问题~~~ Java数组连接函数concat疑问或apply\call区别 有没办法让window.open弹出的窗口不显示网址,只显示网页标题 一个jq 替换HTML的问题 哪位老大给解释一下jQuery的queue的用法?
思路,如果你的C中不断有当前进度进行输出,那可以在页面中不断调用JS函数读取该输出变量,然后调整进度条,
http://www.scriptlover.com/controls/SliderProgress/下载:http://www.scriptlover.com/agent/?url=/controls/SliderProgress.rar.gz
http://www.scriptlover.com/controls/main.html
1.C和JS通信 可以用XML来解决,这个就不详细讲了
2.进度条,使用CSS百分比做,比如:<div id="warp" style="width:100px;height:10px;border:1px solid #eee;background:#000;overflow:hidden"><!--#warp用以包裹'进度'以及显示这个进度条-->
<div id="point" style="width:90%;background:#44a;height:10px;"></div>
<!--#point利用百分比控制实现和进度条一直的效果,后面需要的是利用JS做width的值的赋值操作-->
</div>
问题是怎么用js读取c中的数据?我也是这那样做过,但我没办法读c中的数据,用文件的形式将c的进度信息写进txt中 然后用js读的时候,我的浏览器是Firefox的 不支持ActiveXObject。如果把进度写进数据库,我还不会用js去读,也就是现在没有个读c中数据的好办法
进度条我都做了很多个 多种多样的,问题就是c和js的通信,我以前也没接触过js,html,xml。完全不懂,网上找了好久也没找到c和js间的通信,自己想用文件的形式通信都是浏览器不支持ActiveXObject。现在是彻底没办法了。
websWrite(wp,T("<html>\n"));
websWrite(wp,T("<head>\n"));
websWrite(wp,T("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\n"));
websWrite(wp,T("<meta name=\"GENERATOR\" content=\"Microsoft FrontPage 4.0\">\n"));
websWrite(wp,T("<meta name=\"ProgId\" content=\"FrontPage.Editor.Document\">\n"));
websWrite(wp,T("<script language=\"JavaScript\" type=\"text/JavaScript\" src=\"/home/httpd/cgi-bin/myfreetemplates.js\"></script>\n"));
websWrite(wp,T("<link href=\"/home/httpd/cgi-bin/myfreetemplates.css\" rel=\"stylesheet\" type=\"text/css\">\n"));
websWrite(wp,T("</head>\n"));
我试着做过,我设备里没有支持xml的头文件。最好能给出关键部分的源码;
我原来这样做过:在windows下模拟可以读出进度信息,但移植到设备中就不支持ActiveXObject。
我的设备的系统是linux的,服务器是goahead,脚本用的cgi,不知道为什么不支持ActiveXObject;
我的模拟想法是用c做个线程写进度信息到txt文件中,用js再去读信息,显示出来:
以下是代码:
/*** test.c ****/
#include<stdio.h>#include<string.h>int main(){ FILE *fp; char str[8];
int i=0;
for(i=0;i<=100;i++)
{
if(i==99)
{
i=0;
}
memset(str,0,sizeof(str));
sprintf(str,"%d",i);
if((fp=fopen("12.txt","w"))==NULL)/*打开只写的文本文件*/
{
printf("can not open file!");
return 0;
}
fputs(str,fp);/*写入串*/
fclose(fp);/*关文件*/
sleep(2);
}
}
/****** jindu.html *******/
<form name=loading>
<p align=center> <font color="#0066ff" size="2" face="Arial">载入中,请稍等...
<input type=text name=chart size=46 style="font-family:Arial; font-weight:bolder; color:#0066ff; background-color:#fef4d9; padding:0px; border-style:none;">
<input type=text name=percent size=47 style="color:#0066ff; text-align:center; border-style:none;">
<script>
var bar=0
function readFile(filename){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename,1);
while (!f.AtEndOfStream)
s = f.ReadLine();
f.Close();
var i=s;
j=parseInt(i);
return j;
}
count()
function count()
{
bar=readFile('Z:/home/zhang/mytest/readwrite/12.txt');
document.loading.percent.value=bar+"%"
if (bar<100)
{
setTimeout("count()",300);
}
//else
//{
// window.location = "http://www.alixixi.com";
//}
}
</script>
</p>
</form>
模拟成功,模拟时为了简单没做动画,但百分比完全正确!!
我设备的芯片用的arm920t 系统好像是Linux2.6.10的,服务器移植的goahead,脚本解释器是cgi,上面jindu.html移植到设备中时报错的时候就在readFile的var fso = new ActiveXObject("Scripting.FileSystemObject");这一行,报错:Automation服务器不能创建对象。其他还有没有错我都不知道。
我看了很多网上的说法都说ActiveXObject只与浏览器有关,我去Firefox浏览器模拟的时候确实不行,在windows下用IE浏览器模拟的时候正常,就是移植到我设备才出现:Automation服务器不能创建对象。
我现在也搞不懂上面原因了,可能是服务器或是cgi的原因?
高手出来指点一下
想了一下,应该可以这样做:
1,首先C程序完成主要工作,同时不断地在某个地方输出完成的当前进度值并写进一个文件,这个文件可以保存在server上,以方便后面的client端函数访问,这个文件可以是 .txt(建议使用),或.xml或.html 文件,根据情况设定,文件内容可能就是一个很简单的当前进度值;2,在client端建立一个AJAX函数,函数里面读取放在server上的.txt文件的内容,根据返回值不断修改进度条,然后不断调用该函数读去.txt的内容,即可实现动态效果,AJAX的建立可不受ActiveXObject的限制,在MS ,FF IE应该都可以用;
整个过程就用中间的 .txt文件把C和JS两个程序联系起来:C程序 ---(不断输出当前进度值,并写入文件)--->txtFile.txt--->(web页)JS程序读取.txt文件内容,显示进度
|<..........................Server端......................>|<.........Client端.................>|
你的想法和我一样,我就是在js中卡在ActiveXObject上读不出数据。
高手能不能晒出一点AJAX函数读txt文件的代码参考?
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript">var bar=0;
var line="||";
var amount="||";
function count()
{
bar=bar+2;
amount=amount+line;
document.loading.chart.value=amount;
document.loading.percent.value=bar+"%";
if(bar<=100)
{
setTimeout("count()",100);
}else
{
window.location="success.html";
}
}
</script>
</head><body onload="count()">
<form name="loading">
<p>
正在页面载入。请稍等
<br />
<input type="text" name="chart" size="46" style="font-family:Arial, Helvetica, sans-serif; font-weight:bolder; color:#666633; background-color:#ffffff; padding:0px; border-style:none;" />
<br>
<input type="text" name="percent" size="46" style="font-family:Arial, Helvetica, sans-serif; color:#0000FF; text-align:center; border-width:medium; border-style:none" />
</form>
</body>
</html>
代码也不怎么好啊!
高手做出来将感激不尽,也当多学习了
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<style type="text/css">
*{font-family:verdana; font-size:12px;}
div{border:1px solid red; padding:2px;}
</style>
<script type="text/javascript">
function $(id){
return "string" == typeof(id) ? document.getElementById(id) : id ;
}function createXMLHttp(){
var xmlhttp;
if(window.XMLHttpRequest){
try{
xmlhttp=new XMLHttpRequest();
}catch(e1){}
}
if (!xmlhttp && window.ActiveXObject){
var activeXNameList=new Array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
"Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP");
for(var i=0;i<activeXNameList.length;i++){
try{
xmlhttp=new ActiveXObject(activeXNameList[i]);
}catch(e2){
continue;
}
if(xmlhttp) break;
}
}
if(xmlhttp)
return xmlhttp;
else
alert("Can not create XMLHttpRequest, maybe need to update your browser to new version.");
}var objXMLHttp=null;function getInfo(){
var goURL="http://www.xx.com/path/xFile.txt"; //根据你的情况设顶
if(!objXMLHttp) objXMLHttp=createXMLHttp();
objXMLHttp.open("GET",goURL,true);
//objXMLHttp.onreadystatechange=CallBackFun; //可以指定外部函数CallBackFun为返回处理函数
objXMLHttp.onreadystatechange=function(){ //这里直接给出
if(objXMLHttp.readyState==4){
if(objXMLHttp.status==200){
var r=objXMLHttp.responseText;
$("revalue").innerHTML=r;
alert("返回结果值: "+r);
//...do something here....
}
}
};
objXMLHttp.send(null);
}
//你可能不断的条调用这个getInfo函数,如下:
//var timer=setInterval("getInfo()",10);
</script>
<body>
<div id="revalue"> </div>
<a href="javascript:getInfo();">TEST Get Info </a>
</body>
</html>试看,...
以下是我修改后的,修改的地方注释了,点击都一点反应也没有
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<style type="text/css">
*{font-family:verdana; font-size:12px;}
div{border:1px solid red; padding:2px;}
</style>
<script type="text/javascript">
function $(id){
return "string" == typeof(id) ? document.getElementById(id) : id ;
}function createXMLHttp(){
var xmlhttp;
if(window.XMLHttpRequest){
try{
xmlhttp=new XMLHttpRequest();
}catch(e1){}
}
if (!xmlhttp && window.ActiveXObject){
var activeXNameList=new Array("Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
"Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP");
for(var i=0;i<activeXNameList.length;i++){
try{
xmlhttp=new ActiveXObject(activeXNameList[i]);
}catch(e2){
continue;
}
if(xmlhttp) break;
}
}
if(xmlhttp)
return xmlhttp;
else
alert("Can not create XMLHttpRequest, maybe need to update your browser to new version.");
}var objXMLHttp=null;function getInfo(){
var goURL="Z:/home/zhang/mytest/readwrite/12.txt"; //我修改的地方,这是我上面贴出的用过可以读出数据的文件
if(!objXMLHttp) objXMLHttp=createXMLHttp();
objXMLHttp.open("GET",goURL,true);
//objXMLHttp.onreadystatechange=CallBackFun; //可以指定外部函数CallBackFun为返回处理函数
objXMLHttp.onreadystatechange=function(){ //这里直接给出
if(objXMLHttp.readyState==4){
if(objXMLHttp.status==200){
var r=objXMLHttp.responseText;
$("revalue").innerHTML=r;
alert("返回结果值: "+r);
//...do something here....
}
}
};
objXMLHttp.send(null);
}
//你可能不断的条调用这个getInfo函数,如下:
//var timer=setInterval("getInfo()",10);
</script>
<body>
<div id="revalue"> </div>
<a href="javascript:getInfo();">TEST Get Info </a>
</body>
</html>
|<..........................Server端......................>|<.........Client端.................>|红色部分是 server 端, 兰色部分是client端 , 这里你需要理解B/S模型工作方式var goURL="Z:/home/zhang/mytest/readwrite/12.txt"; //我修改的地方,这是我上面贴出的用过可以读出数据的文件你的12.txt文件应该放在 SERVER 端上,goURL 的值应该是 以http://形式为开始给出的URL
1.C和JS的通讯
这个只需要用C生成一个JS文件就可以了,内容如下:
var 变量名称=数据值;
这样就OK!! 然后在你要用的页面里,在<head></head>中<script id="脚本ID" src="那个js.js"></script>
这样,你就把那个变量读进来了.在下面的JS里就可以直接使用那个 变量名称.2.至于不断更新同步数据.可以用定时器去更改脚本ID的src(页面禁止缓存,最好给JS加时间戳),也可以AJAX去读.
不好意思 那天下班了,我就在我的设备上随便读的一个盘上的文件 ,没做到设备的服务器上去,我知道你的意思,就是不知道为什么一定要放到服务器上去才能读出来,就随便创建的一个txt文件放在我的硬盘上的就读不出来?不都是读文件?
我还很菜,不了解其中的原因,就在我的Windows下读了。
上班去公司在server上读了试试
高手能不能给点代码,我三个星期前都没听过js和AJAX,
比如我现在要读c语言的变量float Curprogress;
我有个线程不断的对Curprogress写数据 ,请问你在js里怎么读出来,能用js的话最好用js,我这几个星期稍微才对js了解一点点,对AJAX根本不知道,
简单的话,能不能给点代码,
用C写文件,会吧?打开,写入,关闭.只不过,你写的这个文件,起名成"A.JS",它的内容就象我已经给你写的代码:"var B=Curprogress的值;"
这样就OK!! 然后在你要用的页面里,在<head></head>中<script id="脚本ID" src="A.js"></script>
在页面下面的JS里就可以直接使用这个变量了.
<script>alert(B);</script> 这就显示出你那个Curprogress了!既然你现在做网页开发,建议买本好书好好学学JS.或者,公司应该有专门的前台脚本工程师,这个任务应该让他也参与提供方法,你们之间找到彼此都易行的协作方式.否则,按你现在这样问所显示出来的状况,很不乐观.
除此之外,还可以写入服务器的SESSION中或者XML,或者数据库.但是通过C来写入与客户端对应的SESSION,和XML,都远没有上面那么简便.数据库的话,存取性能也要差些.
所以,综合考虑,就是我说的了.
以前在windows下模拟的时候,用的ActiveXObject创建对象读.txt文件时,主动刷新还能读出数据,只是我的Linux系统或是Firefox浏览器不支持ActiveXObject。
还真是蛋疼的了,公司就我一个人做网页,都没其他人做了,而且这个项目做完我也不做网页了,就只是在网上找东西东拼西凑的,然后周末去看看html,革命开始不久,html还在了解中,项目就要近尾声了
系统部支持,也没用的了。。
用ajax请求发送到服务端, 服务端只需要传两个值(当前/最大经验), 剩下的在html上显示lz都会了吧.好, lz只需用会ajax, 就完全可以解决了. ajax发送一个请求到一个地方, 你用C在这个地方监听, 收到此消息即从你的C中返回那两个值. html显示就可以了
ajax发送一个请求到一个地方, 这个地方怎么弄?你用C在这个地方监听,我怎么找到这个地方,要是两种语言能找到一个共同的地方我就实现数据交互了,ajax不懂 ,不知道怎么弄的。
控制样式颜色宽度百分比,那个简单啊,早出来了,上面已经贴了几个那样的代码,关键是那个百分比要能是我c语言中的百分比,怎么实现将c语言中的数据传到样式百分比中,那种颜色的我不需要都行,只要能显示各数字,变化的数字,与c语言中百分比同步变化的数字就ok