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

Javascript 如果我添加这段代码,为什么ajax调用错误函数?,javascript,java,jquery,ajax,servlets,Javascript,Java,Jquery,Ajax,Servlets,我有jquery脚本,它将一些数据发布到servlet。若servlet只有一个代码字符串-response.getWriter().print(“message”)。若我试图设置响应内容类型或刷新输出流,则脚本调用错误函数。为什么? 下面是脚本代码 $(document).ready(function () { $("#login-button").click(function () { var userPassword = $("input#userP

我有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添加任何代码,结果总是相同的-
对象{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();*/
  }

}

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

您发布json并将数据类型添加为text man浏览器控制台中有什么错误检查浏览器的“开发工具网络”选项卡中的HTTP响应;我怀疑您会发现它失败了,这与连接的客户端无关。我会检查
url
,因为上面写着:
login
,这很可能是错误的,并且没有返回类型为
text
的ajax响应,您还应该删除类型为
text
的数据类型,因为这几乎是不需要的,如果有的话。这里的
dataType
属性是您期望从ajax响应返回的内容。如果这不是类型
text
,则会导致错误。从错误消息(特别是
状态:0
)可以看出,您在执行ajax调用之前正在刷新页面,如果您提交
表单
,则可能会发生这种情况。可能
#登录按钮
是一个
表单
提交
输入
元素。