Javascript 如果我添加这段代码,为什么ajax调用错误函数?
我有jquery脚本,它将一些数据发布到servlet。若servlet只有一个代码字符串-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
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调用之前正在刷新页面,如果您提交表单
,则可能会发生这种情况。可能#登录按钮
是一个表单
提交输入
元素。