【问题标题】:Servlet JSP with AJAX and JSON带有 AJAX 和 JSON 的 Servlet JSP
【发布时间】:2018-12-13 16:17:19
【问题描述】:

我一直在做我的学校项目,但我的登录页面似乎无法正常工作。

它总是给我一个解析错误,如图所示: Error Login AJAX

对于我的登录,我使用一个简单的 servlet,连接到 sql-server 数据库。 在 servlet 方面,我检查了调试模式.. 一切正常。 这是servlet代码:

package servlets;

 import DAO.Model;
 import com.google.gson.Gson;
 import java.io.IOException;
 import java.io.PrintWriter;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.json.simple.JSONObject;


 public class login extends HttpServlet 
 {
 private static PrintWriter out;
 private static String message;
 private static Gson gson;
 private JSONObject simpleJO;
 Model model = null;

 public void init(ServletConfig conf) throws ServletException
{
    super.init(conf);

    ServletContext ctx = conf.getServletContext();
    String URL = ctx.getInitParameter("DB-URL");

    model = new Model(URL);
}

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException 
{
    simpleJO = new JSONObject();
    gson = new Gson();
    String usernameStudente = request.getParameter("usernameStudente");
    String emailDocente = request.getParameter("emailDocente");
    String mansioneUtente = request.getParameter("mansioneUtente");
    String passwordUtente = request.getParameter("passwordUtente");

    response.setContentType("text/html; charset=UTF-8");
    out = response.getWriter();

    System.out.println("Username: " + usernameStudente);
    System.out.println("Password: " + passwordUtente);
    System.out.println("Mansione: " + mansioneUtente);

    if(mansioneUtente.equals("Studente"))
    {
        if(model.loginStudenti(usernameStudente, passwordUtente))
        {
            simpleJO.put("status",true);
            simpleJO.put("error", "Login Studente Success");
        }
        else
        {
            simpleJO.put("status",false);
            simpleJO.put("error", "Login Studente Failed");
        }
    }
    else if(mansioneUtente.equals("Docente"))
    {
        if(model.loginDocenti(emailDocente, passwordUtente))
        {
           simpleJO.put("status",true);
           simpleJO.put("error", "Login Docente Success");
        }
        else
        {
            simpleJO.put("status",false);
            simpleJO.put("error", "Login Docente Failed");
        }
    }
    message = gson.toJson(simpleJO);
    System.out.println(message);
}

}

这是我的 javascript 文件:

$(document).ready(function()
{
$('#mansioneUtente').change(function()
{
    if($('#mansioneUtente').val() == 'Studente')
    {
        $('#usernameStudente').attr('disabled',false);
        $('#emailDocente').attr('disabled',true);
    }
    else if($('#mansioneUtente').val() == 'Docente')
    {
        $('#usernameStudente').attr('disabled',true);
        $('#emailDocente').attr('disabled',false);
    }

}).trigger('change');

$('#btnLoginUtente').click(function()
{
    processUserLogin();
});
});

function processUserLogin()
{
var sdata = {
    mansioneUtente: $('#mansioneUtente').val(),
    usernameStudente: $('#usernameStudente').val(),
    emailDocente: $('#emailDocente').val(),
    passwordUtente: $('#passwordUtente').val()};

$.ajax(
{
    url:'login',
    type:'POST',
    data: sdata,
    dataType: 'JSON',
    async: false,
    success: function(data)
    {
        if(data.status === true)
            alert(data.error);
        else
            alert(data.error);
    },
    error: function (jqXHR, textStatus, errorThrown,data) 
    {
        alert("JQXHR: " + jqXHR + " TEXT STATUS: " + textStatus + " ERROR THROWN: " + errorThrown + " DATA: " + data);
    }
});
}

如您所见,在警报中,它给了我:data undefined。 有什么帮助吗?

【问题讨论】:

    标签: jquery json ajax servlets


    【解决方案1】:

    在您的 ajax 调用中,您提到了预期的数据类型为 JSON

    dataType: 'JSON',
    

    但是您的 servlet 没有返回任何内容。这就是您未定义数据的原因。

    解决方案是让您的 servlet 返回 JSON 数据。 在函数顶部有 @ResponseBody 注释。将所需数据以 JSON 格式绑定到响应对象。

    JSONObject jsonObj      = new JSONObject();
    jsonObj.put("ObjName", yourObject);
    response.setContentTyp("application/json");
    response.getWriter().write(jsonObj.toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-06
      • 2013-07-01
      • 2012-12-26
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多