【问题标题】:Not getting response on the same page using Ajax使用 Ajax 在同一页面上未获得响应
【发布时间】:2017-11-24 21:23:17
【问题描述】:

您好,我正在开发一个项目,在该项目中我使用 Ajax 在同一页面上显示输出。它包含一个 JSP 表单,它接受用户输入并将输入存储到数据库中,作为响应,我想显示一条成功消息。

但我没有在同一页面上收到消息。

JSP 代码:- 我尝试过同时使用 get 和 post 方法,但没有用。 单击“添加”按钮时,如果在同一页面上成功插入记录,则应显示成功消息,但我在另一页面上收到该消息。

请帮助解决这个问题。这是我第一次使用 Ajax。我们需要对 web.XML 文件进行任何更改吗?

`

<!DOCTYPE html>
    <html>

            <head>
            <title>Courses</title>


          <script>
                var request;
                function addDetails(){
                    request=new XMLHttpRequest();
                    request.onreadystatechange()=getResult();
                    var cid=document.getElementById("cid").value;
                    var name=document.getElementById("name").value;
                    var syllabus=document.getElementById("syllabus").value;
                    var duration=document.getElementById("duration").value;
                    var fees=document.getElementById("fees").value;

                    request.open("get","Courses?cid="+cid,"name="+name,"syllabus="+syllabus,"duration="+duration,"fees="+fees,true);
                    //request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                    //request.send(cid&name&syllabus&duration&fees);
                    request.send();
                }

                function getResult(){
                    if(request.readyState===4&&request.status===200){
                        var result=request.responseText();
                        document.getElementbyID("output").innerHTML=result;
                    }
                    else{
                        document.getElementbyID("output").innerHTML="Error";
                    }

                }



                </script>
                <style>
                body {
                    text-align:center;
                }
                h1 {
                    font-size:30px;
                    font-weight:bold;
                    color:peru;
                }
                pre {

                    font-size:20px;
                    font-weight:bold;
                    color:black;
                }

            </style>
        </head>
        <body>
            <h1>Course Information</h1><br/>
            <form action="Courses" method="Post">
                <pre>
            Course ID    : <input type="text" name="cid" id="cid" style="width:400px"/><br/>
            Course Name  : <input type="text" name="name" id="name" style="width:400px"/><br/>
            Syllabus     : <input type="text" name="syllabus" id="syllabus" style="width:400px"/><br/>
            Duration     : <input type="text" name="duration" id="duration" style="width:400px"/><br/>
            Fees         : <input type="text" name="fees" id="fees" style="width:400px"/><br/>
            <input type="submit" name="Add" value="Add" onclick="addDetails()"/> <input type="submit" name="Update" value="Update"/> <input type="submit" name="Delete" value="Delete"/>
            <p id="output"></p>
                </pre>
            </form>
        </body>
    </html>

` Servlet 代码:-

package ss;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Courses extends HttpServlet {

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
       PrintWriter out = response.getWriter();
            try{
            String cid=request.getParameter("cid");
            String name=request.getParameter("name");
            String syllabus=request.getParameter("Syllabus");
            String duration=request.getParameter("duration");
            String fees=request.getParameter("fees");

            Class.forName("com.mysql.jdbc.Driver");
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/ssi","root","root17");

            if(request.getParameter("Add")!=null){
                String qry="insert into course values(?,?,?,?,?)";
                PreparedStatement ps=con.prepareStatement(qry);
                ps.setString(1, cid);
                ps.setString(2, name);
                ps.setString(3, syllabus);
                ps.setString(4, duration);
                ps.setString(5, fees);
                int i=ps.executeUpdate();
                   if(i>0){
                       out.println("Registered Successfully");
                   }
                   else{
                       out.println("Registration Fails");
                   }
            }

        if(request.getParameter("Update")!=null){
            String qry="UPDATE course SET Name=?,Duration=?, syllabus=?, fees=? where cid=?";
            PreparedStatement ps=con.prepareStatement(qry);
            ps.setString(1,name);
            ps.setString(2,duration);
            ps.setString(3,syllabus);
            ps.setString(4, fees);
            ps.setString(5, cid);
            int i=ps.executeUpdate();
            if(i>0){
                out.println("Updated Successfully");
                out.println(i);

            }
            else{
                out.println("Update fails");
            }
        }
        if(request.getParameter("Delete")!=null){
            String qry="Delete from course where cid=?";
            PreparedStatement ps=con.prepareStatement(qry);
            ps.setString(1, cid);
            int i=ps.executeUpdate();
            if(i>0){
                out.println("Record Deleted");
            }
            else{
                out.println("Delete Fails");
            }
        }
       }  
            catch(Exception e){
                out.println(e);
            }

           }


}

【问题讨论】:

    标签: java ajax jsp servlets


    【解决方案1】:

    您将addDetails 附加到提交按钮。当它被点击时,它将提交您最可能不想发生的页面。将类型更改为按钮:&lt;input type="button" name="Add" value="Add" onclick="addDetails()"/&gt;

    【讨论】:

    • 感谢您的回答,我更改了 type="button" 但仍然没有结果,现在页面也没有刷新。页面保持不变但没有输出。我在发送数据时是否犯了任何错误?
    • 感谢您的回答,因此我也进行了更改。现在页面保持不变,但仍然没有显示任何消息。
    • 现在您很可能正面临某种类型的 JavaScript 问题。首先确保它正在调用您的 servlet。然后开始调试实际的脚本,并确保它确实达到了更新ouput 元素的地步。您可以在 chrome 开发工具中调试 JavaScript,也可以在其中添加 alert 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2021-08-26
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多