提交JSP后提供javascript警报而不刷新页面

时间:2015-08-17 09:32:12

标签: javascript java jsp servlets

我将数据输入到jsp页面并从数据库中验证它。如果验证为false而不刷新页面,我需要在JSP页面上发出警报,因为用户在页面刷新时被迫重新输入所有细节: 我的验证方法:

public boolean accountCifMismatch(String account, String custid) {
        Connection conn;
        int count = 0;
        try {
            conn = db.getDbConnection();
            String sql = pr.getDBProperty().getProperty("com.crb.accountCifMismtach");
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, account);
            ps.setString(2, custid);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                count = rs.getInt(1);
            }
            DBConnection.closeConn(conn);
            System.out.println(MemoryListener.getMemoryDetails());
        } catch (Exception asd) {
            System.out.println(asd.getMessage());
            return false;
        }
        return count == 0;
    }

我的servlet电话:

Fraud fmd = new Fraud();
 if (!fmd.accountCifMismatch(account_no, cust_id)) {
//Continue Processing
} else {
          session.setAttribute("accountcifmismtach", true);
          session.setAttribute("content_page", "fraud.jsp");
             }

并在fraud.jsp上调用javascript:

<script type="text/javascript">
    if (${accountcifmismtach == 'true'}) {
        alert("Account Number CIF Mismtach");
    }
</script>

编辑我正在提交表单:

 <form id="form1" name="form1" method="post" action="do?MOD=BOK&ACT=doFindFraud">
</form>

警报显示,然后页面刷新,因此用户必须再次输入所有详细信息。如何在不刷新页面的情况下显示警报?

2 个答案:

答案 0 :(得分:1)

如果要在不刷新页面的情况下验证表单,则需要使用AJAX。

有许多方法可以进行ajax调用,但使用Java编程语言我更喜欢DWR(Direct Web Remoting)Easy AJAX for java

DWR Way

http://directwebremoting.org/dwr/documentation/index.html

下列其他着名方式:

JQUERY Way

 // process the form
        $.ajax({
            type        : 'POST', // define the type of HTTP verb we want to use (POST for our form)
            url         : 'process.php', // the url where we want to POST
            data        : formData, // our data object
            dataType    : 'json', // what type of data do we expect back from the server
                        encode          : true
        })
            // using the done promise callback
            .done(function(data) {

                // log data to the console so we can see
                console.log(data); 

                // here we will handle errors and validation messages
            });

JavaScript(无需Jquery)

function AJAXPost(formId) {
    var elem   = document.getElementById(formId).elements;
    var url    = document.getElementById(formId).action;        
    var params = "";
    var value;

    for (var i = 0; i < elem.length; i++) {
        if (elem[i].tagName == "SELECT") {
            value = elem[i].options[elem[i].selectedIndex].value;
        } else {
            value = elem[i].value;                
        }
        params += elem[i].name + "=" + encodeURIComponent(value) + "&";
    }

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else { 
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("POST",url,false);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(params);

    return xmlhttp.responseText;
}

答案 1 :(得分:0)

在提醒后写回返false,并将所需的输入表单元素集中在javascript中。

Ex:docuemnt.getElementById(&#39; requiredInputElement&#39;)。fous;