A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严明 初级黑马   /  2012-6-21 18:16  /  9712 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 严明 于 2012-6-22 07:05 编辑

用MyEcilpse新建一个JSP网页中:  默认会生成如下代码

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
</head>




然后我在<head>中编写一段JavaScript代码验证表单,如下:
  <head>               
<base href="<%=basePath%>">
                <script language="javascript">
function validate() {
        var name=document.getElementByName("username").value;


</script>
        </head>

问题是: var name=document.getElementById("user").value; 这段代码是不能获取到JSP中表单中的值,当删除<base href="<%=basePath%>"> 后,
才能获得表单中的值.
如果不删除 <base href="<%=basePath%>"> ,必须用var user=$("username").value; 替换 var name=document.getElementById("user").value;  才能获得表单上的值,
也就是说用var user=$("username").value;  时必须有<base href="<%=basePath%>">  ,为什么?谁能帮忙解释一下<base href="<%=basePath%>">  这句代码的作用?

















4 个回复

倒序浏览

回帖奖励 +2

本帖最后由 耿鑫 于 2012-6-22 10:55 编辑

你可以这么理解
这是设置基础路径的,学名叫基连接 ,basepath为变量
简单的静态网页的话你设置比如:<base >,以后你就不用像以前那么写:<a ></a>你现在就只需要写<a href="xxx.html"></a>就行了

另外一个问题,能不能把你的代码都发上来



回复 使用道具 举报
本帖最后由 严明 于 2012-6-22 12:48 编辑
耿鑫 发表于 2012-6-22 02:05
你可以这么理解
这是设置基础路径的,学名叫基连接 ,basepath为变量
简单的静态网页的话你设置比如:,以后 ...

好像听懂了一点点,完整代码如下:





<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                        + request.getServerName() + ":" + request.getServerPort()
                        + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
        <head>
                <script type="text/javascript">
function validate() {
        var username = document.getElementsByName("username")[0];
        var password = document.getElementsByName("password")[0];

        if (username.value.length < 4 || username.value.length > 10) {
                alert("username length should between  4 to 10");
                return false;

        }  
        if (password.value.length < 4 || password.value.length > 10) {
                alert("password length should between  4 to 10");
                return false;

        }
        var sex = document.getElementsByName("sex")[0];

        if (sex == "") {
               
                aler("sex must select");
                return false;

        }
        
                var textarea = document.getElementsByName("textarea")[0];
        if ()
        
        
        
        
        
        
        return true;
}
</script>





        </head>

        <body>
                <form action="loginTestServlet" method="post" >
                        username:
                        <input type="text"  name="username">
                        <br>
                        password:
                        <input type="password" name="password">
                        <br>
                        性别:
                        <input type="radio" name="sex">
                        男  
                        <input type="radio">
                        女
                        <br>
                        兴趣:
                        <input type="checkbox">
                        足球  
                        <input type="checkbox">
                        蓝球  
                        <input type="checkbox">
                        羽毛球  
                        <input type="checkbox">
                        排球
                        <br>

                        地址:
                        <select>
                                <option>
                                        上海
                                </option>
                                <option>
                                        北京
                                </option>
                                <option>
                                        天津
                                </option>
                        </select>
                        <br>

                        说明:
                        <textarea rows="10" cols="15" name="textarea"></textarea>
                        <br>
                        <input type="submit" value="submit">
                          
                        <input type="reset" value="reset">
                </form>
        </body>
</html>









代码红色部分,如果改成:

var user=$("username").value;
var user=$("password").value;


必须加上这么一段 ,为什么?:


<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
</head>











回复 使用道具 举报
本帖最后由 耿鑫 于 2012-6-22 10:59 编辑
严明 发表于 2012-6-22 07:04
好像听懂了一点点,完整代码如下:

看完你代码我才明白,是你写错了

首先你这个validate()函数根本就没起到作用,把action去掉改成onsubmit="return validate() "然后var username = ${"username"}.value,本身就是错的  EL表达式是从Attribute里取值,是Servlet端set到Attribute当中的内容要用${}取,和document.getElementsByName("username")[0]完全是两码事,document.getElementsByName("username")[0]是去表单上的数据,这个和basePath没有关系,是你书写的问题。
回复 使用道具 举报
耿鑫 发表于 2012-6-22 10:56
看完你代码我才明白,是你写错了

首先你这个validate()函数根本就没起到作用,把action去掉改成onsubmit= ...

是这样啊, 丢人丢大了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马