jsp页面:
// 这里只给出重要部分....
// js部分
$(function(){
$("#name").blur(function() {
var value = $("#name").val();
// 使用ajax发送请求
$.ajax({
url: "AjaxServlet",
cache: false,
data: "name="+value,
async: true,
dataType: "json",
success: function(result){
if(result){
console.log("ajax 请求结果为 true");
return true;
}
}
})
console.log("ajax 执行完毕!");
});
})
// 表单
<form action="AjaxServlet" method="post">
姓名:<input type="text" id="name" >
</form>
servlet部分代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
boolean b = false;
if(name.equals("aaa")) {
b = true;
}else {
b = false;
}
response.getWriter().print(b);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
当async为true时访问结果为:
当async为false时访问结果为:
困惑:
第一个结果能理解,async为true表示ajax和成功处理函数是异步执行的,也就说有可能ajax请求处理函数还没有执行,就执行ajax请求后面的程序(也就是输出”ajax 执行函数”),所以ajax请求中的return 不起作用。
第二个结果就不清楚了,async为false表示程序不是异步执行的,也就是说,想要执行ajax请求后面的程序,就得等到ajax请求执行完毕。那为什么ajax请求中return 还是不起作用呢?
求解答!
更新:其实结果是正常的,只是自己理解错了!谢谢那些想帮助我但是又没有帮助到的人。给你们每人一个大红花!