为什么ajax调用错误函数,如果我添加此代码?

时间:2016-04-14 05:49:02

标签: javascript java jquery ajax servlets

我有jquery脚本,它将一些数据发布到servlet。脚本调用成功函数,如果servlet只有一个代码串 - response.getWriter().print("message");。如果我尝试设置响应内容类型或刷新输出流,其他任何东西,脚本调用错误函数。为什么呢?

这是脚本代码

$(document).ready(function () {
        $("#login-button").click(function () {
            var userPassword = $("input#userPassword").val();
            var userLogin = $("input#userLogin").val();
            $.ajax({
                type: "POST",
                url: "login",
                dataType: "text",
                data: {login: userLogin, password: userPassword},
                success: function (data) {
                    alert("Successful request! Data is " + data.toString());
                },
                error: function (jqXHR) {
                    console.log(jqXHR);
                }
            });
        });
    });

console.log(jqXHR)的结果如果我向servlet添加任何代码总是相同的 - Object {readyState: 0, responseText: "", status: 0, statusText: "error"}

这是servlet的代码

public class LoginServlet extends HttpServlet {

  public static final Logger LOGGER = Logger.getLogger(LoginServlet.class);

  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        LOGGER.info("Start calling safe service");
        safeService(request,response);
        LOGGER.info("End calling safe service");
    } catch (Exception e) {
        LOGGER.info("Error while processing loginServlet ",e);
        LOGGER.error("Error while processing loginServlet ",e);
    }

  }

  protected void safeService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // If I add this code, script calls error function
    /*response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");*/

    response.getWriter().print("welcome.html");


    // Or even this code.
    /*response.getWriter().flush();
    response.getWriter().close();*/
  }

}

日志很干净,没有任何运行时异常。

0 个答案:

没有答案