当我把

标签(空格分隔): html ajax servlet form


1.问题描述


这是一个填写用户名和消息后,点击 encryptMessage 按钮后可以获得加密后的消息的表单,当我想通过 ajax 获取到 servlet 处理后的结果时,我的 message.jsp 页面部分代码如下:

    
        input message:
        
        
send to this guy (his username) :

encryptedMessage:


我的 javascript 代码 :

function createHttpRequest(method, url, callback) {
    httpRequest = false;
    if (window.XMLHttpRequest) {
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            httpRequest = new ActiveXObject("Msxm12.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
            }
        }

    }

    if (!httpRequest) {
        alert("can not create XMLHttpRequest object .");
        return false;
    }

    httpRequest.onreadystatechange = callback;
    httpRequest.open(method, url, true);
    httpRequest.send(null);

}

function encrypt() {
    var username = document.getElementById("username").value;
    var message = document.getElementById("message").value;
    var url = "EncryptMessageServlet?message=" + encodeURI(encodeURI(message))
            + "&username=" + encodeURI(encodeURI(username));
    createHttpRequest("GET",url, getEncrypt);
}

function getEncrypt() {
    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            document.getElementById("showEncrytedMessage").innerHTML = httpRequest.responseText;
        } else {
            alert("ERROR");
        }
    }
}

按理说我当我输入username=1111,password=hello,点击encryptMessage按钮后textarea里应出现加密后的消息,可是当我点了按钮后 url 一直显示:

localhost:8080/homework/message.jsp?username=1111&message=hello

但是当我在地址栏输入:

localhost:8080/homework/AddEncrptMessage?username=1111&message=hello

即直接请求 Servlet 时,页面输出了加密后的消息。

2.


当在form表单里使用

    

代替:


一切正常了。

3.原因所在


W3School 上有说:

请始终为按钮规定 type 属性。Internet Explorer 的默认类型是 "button",而其他浏览器中(包括 W3C 规范)的默认值是 "submit"。

你可能感兴趣的:(当我把