网站地图    收藏   

主页 > 前端 > javascript >

form表单action提交问题详解

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 本文章来给各位同学介绍关于form表单action提交问题详解,这里包括有参数无效,提交路径问题,action重复提交的分析与解决办法。...

form 提交action中参数无效


页面通过表单(form)想服务器提交数据的时候有两种形式,一个是POST,另一个是GET。两种的一个区别是GET会直接把数据附加在url的后面,而POST发送的数据放置在http包中。form的action属性就是提交数据的url地址,method属性可以指定是GET或POST。

需要注意的是如果采用GET方式,那么action url中参数都会被丢弃,提交时候只会把form中的数据拼接在url向服务器提交;但是POST的方式则不会这样,它会按照action指定的url进行提交数据,包含url后面跟着的参数和参数值


action提交路径问题

我遇到的是Form表单提交到servelet处理时遇到的问题:
(1)<form name="form1" action="①?" method=“②?”>
      //表单的内容
     </form>

(2)对应的处理用户请求的servlet类为HelloServlet.java;


(3)配置web.xml文件:

 代码如下 复制代码

<servlet>
<servlet-name>③servlet</servlet-name>
<servlet-class>/HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>③servlet</servlet-name>
<url-pattern>/①welcome</url-pattern>
</servlet-mapping>

然后在login.jsp中应该是:

<form action="①welcome" method="②?">

这样的话login.jsp的url是http://localhost:8080/jsp/login.jsp

而HelloServlet.java的url是http://localhost:8080/jsp/welcome

注:web.xml中③对应的两个servlet-name要一致;①中的url-pattern要与form表单中的action属性值一致。


form表单action重复提交


 在做一个jsp提交页面时,数据莫名其妙提交2次,数据库数据插入2次,开始只把注意力集中在提交到Servlet里,做了很多测试,折腾半天,才测试出来:根本不是Servlet的问题!问题出在jsp页面上。jsp页面的提交事件导致自动提交了2次。
form表单的js判断函数只返回false,忘记写返回true,真是郁闷死。就像下面这样:

 代码如下 复制代码
function check()
{
if(""==document.myform.name.value)
{//作业名称
window.alert("请先填写作业名称!");
document.myform.name.focus();
$(".name").next().show();
return false; //离开函数
}  
}

提交按钮 onclick="javascript:return(checkform());"
上面的check()函数由于缺少return true,导致form表单action重复提交2次。
搜索一下,网上很多人遇到form表单action重复提交2次的问题,原因都是大同小异:
如下
1.

 代码如下 复制代码
(1)<input type="submit" value="tijiao" onclick="return checkField();"/>或者图片<input type="image" src="../images/btn-login.gif" alt="Login" class="btn-login" onclick="return checkField();"/>  
(2)if(usernameValue !== "" && passwordValue !== ""){  
                  
        //document.getElementById("loginForm").submit(); 如果写了这行就提交了2次。    
        return true;  
}

2.jsp页面有些链接地址是""
如:

 代码如下 复制代码
<img src="" />
<link type="text/css" href=""/>" rel="stylesheet" />

主要就是连接不能为空。
3.
最近在做一个JAVA项目,发现在登陆页面点击登陆之后都会执行2次ACTION的代码,跟踪了2天终于找到问题的根源:
在登陆页面LOGIN.JSP中,如果提交按钮写成如下的方式则会提交两次:

 代码如下 复制代码

<script type="text/JavaScript">
function loginFunc()
{
var form = document.getElementById("form1");
   form.submit();
}
</script>

 

<form action="processLogin.action" method="post" id="form1">
<s:textfield name="username" cssClass="input" style="width:150px;" value=""></s:textfield>
<s:password name="password" cssClass="input" style="width:150px;" value=""></s:password>
<input type="submit" onclick="loginSystem()"/>//问题出在这一行
</form>

submit类型本身就会提交到ACTION类;onclick方法中又调用了一次submit提交方法,所以导致执行了两次ACTION的代码。

解决方式:

 代码如下 复制代码
<input type="button" onclick="loginSystem()"/>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论