免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11536 | 回复: 11
打印 上一主题 下一主题

cgi表单提交,如何实现页面不跳转 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-19 12:04 |只看该作者 |倒序浏览
最近在做一个嵌入式的东东,板子webserver用的是boa,现在在做通过网页控制摄像头转动。
命令行模式下编写的程序没有问题,现在通过shell写了个cgi脚本通过来执行,点击按钮后电机正常转动,但是网页会跳转到一个空白的页面。
使用的命令如下:
<form action="http://192.168.1.168/cgi-bin/left" method=POST><input type="submit" name="Left" value="Le    ft" ></input></form

(left.cgi是控制向左转的控制程序)

请问如何使点击了一个按钮后,页面不跳转,好让我继续进行下一次的操作?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
2 [报告]
发表于 2009-05-19 12:05 |只看该作者
iframe 或者ajax

论坛徽章:
0
3 [报告]
发表于 2009-05-19 12:37 |只看该作者
可以说具体一点吗?我不懂java,ajax就算了,iframe怎么做呢?

论坛徽章:
0
4 [报告]
发表于 2009-05-19 12:46 |只看该作者
除iframe/ajax外,也可以提交到页面本身

论坛徽章:
0
5 [报告]
发表于 2009-05-19 12:49 |只看该作者
just like

<form target="user_score_frame" action="submit/user_score.html">
</form>
<iframe name="user_query_frame" id="user_query_frame" style="display:none" src="submit/user_query.html</ifram
e>

论坛徽章:
0
6 [报告]
发表于 2009-05-19 14:21 |只看该作者
你好,可以说得详细点吗?现在我webserver上的页面为index3.html,cgi程序为left.cgi,(这是个控制电机左转的程序),在index3.html中LEFT按钮我是这么写的:

<form  action="http://192.168.1.168/cgi-bin/left.cgi" method=POST><input type="submit" name="Left"     value="Left" ></input></form>

这是STOP按钮
   <form action="http://192.168.0.168/cgi-bin/stop.cgi" method="post"><input type="submit" name="Stop" value= "Stop "></input></form></td>

我的目的是点左转,然后电机就左转,然后点STOP,电机就停止。 可现在点左转,电机转了,就停不下来了,页面就跳到/cgi-bin/left.cgi了~

left.cgi和stop.cgi也就是普通的C语言写的串口控制程序,只是加了个printf("Status:204 No Response\n\n");

请教高手我要怎么改才能达到上面的目的呢?小弟很菜,麻烦讲详细点,跪谢了~~

论坛徽章:
0
7 [报告]
发表于 2009-05-20 10:23 |只看该作者
还是用Ajax吧

论坛徽章:
0
8 [报告]
发表于 2009-05-20 10:38 |只看该作者
ajax其实不麻烦,给你几段代码,修改下就可以用啦。

    <SCRIPT type="text/javascript">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var xmlHttp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var responseType = "";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function createXMLHttpRequest()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(window.ActiveXObject)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else if(window.XMLHttpRequest)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp = new XMLHttpRequest();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function doHeadRequest(request,url)
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requestType = request;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;createXMLHttpRequest();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.onreadystatechange = handleStateChange;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.open("HEAD",url,true);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttp.send(null);
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function handleStateChange()
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.readyState == 4)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(requestType == "allResponseHeaders")&nbsp;&nbsp;&nbsp;&nbsp;getAllResponseHeaders();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(requestType == "lastModified")&nbsp;&nbsp;&nbsp;&nbsp;getLastModified();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(requestType == "isResourceAvailable")&nbsp;&nbsp;&nbsp;&nbsp;getIsResouceAvailable();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function getAllResponseHeaders()
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(xmlHttp.getAllResponseHeaders());
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function getLastModified()
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("Last Modified: "+ xmlHttp.getResponseHeader("ETag"));
&nbsp;&nbsp;}
&nbsp;&nbsp;
&nbsp;&nbsp;function getIsResouceAvailable()
&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xmlHttp.status == 200)&nbsp;&nbsp;&nbsp;&nbsp;alert("Successful response");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(xmlHttp.status == 404)&nbsp;&nbsp;&nbsp;&nbsp;alert("Resource is unavailable");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else alert("Unexpected response status:"+xmlHttp.status);
&nbsp;&nbsp;}
&nbsp;&nbsp;</SCRIPT>



  <body>
&nbsp;&nbsp;&nbsp;&nbsp;<H1>Reading Response Headers</H1>
&nbsp;&nbsp;&nbsp;&nbsp;<A href="javascript:doHeadRequest('allResponseHeaders','readingResponseHeaders.xml');">Read All Resonse Headers</A>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="javascript:doHeadRequest('lastModified','readingResponseHeaaers.xml');">Get Last Modified Date</A>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="javascript:doHeadRequest('isResourceAvailable','readingResponseHeaders.xml');">Read Available Resource</A>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="javascript:doHeadRequest('isResourceAvailable','not-available.xml')">Read Unavailabel</A>
&nbsp;&nbsp;</body>

论坛徽章:
0
9 [报告]
发表于 2009-05-20 13:05 |只看该作者
我想请问一下,如果我用ajax的话,我后台运行的CGI程序是不是不用改?只需要把HTML修改一下,加入javascipt就可以了??

论坛徽章:
0
10 [报告]
发表于 2009-05-20 15:17 |只看该作者
原帖由 yuanyang317 于 2009-5-20 13:05 发表
我想请问一下,如果我用ajax的话,我后台运行的CGI程序是不是不用改?只需要把HTML修改一下,加入javascipt就可以了??


后他cgi就是接收form里的参数,然后处理,不知道需不需要再返回页面,如果不需要的话就不用改。
然后使用ajax提交form表单,参数还是那几个。
http://www.baidu.com/s?wd=ajax+p ... +&f=3&rsp=0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP