Java JQuery AJAX Done未执行
我不熟悉jquery和上面的代码。done块未执行,firebug控制台显示以下消息:-Java JQuery AJAX Done未执行,java,jquery,ajax,json,Java,Jquery,Ajax,Json,我不熟悉jquery和上面的代码。done块未执行,firebug控制台显示以下消息:- GET myurl?userID=aman&password=aman200 OK 37ms jquery….min.js(第2行) 出现以下错误:(空字符串)Object{readyState=0,status=0,statusText=“error”} 服务器端脚本编写 $('#loginForm').submit(function(e){ var $inputs = $(this).
GET myurl?userID=aman&password=aman
200 OK 37ms jquery….min.js(第2行)
出现以下错误:(空字符串)Object{readyState=0,status=0,statusText=“error”}
服务器端脚本编写
$('#loginForm').submit(function(e){
var $inputs = $(this).find("input");
var serializedData = $(this).serialize();
$inputs.prop("disabled", true);
var request = $.ajax({
url: "myurl",
dataType: "json",
type: "GET",
data: serializedData,
});
request.done(function (response, textStatus, jqXHR){
$('#loginMessage').text('GOOD');
});
request.fail(function (jqXHR, textStatus, errorThrown){
$('#loginMessage').text('Some error occured. Please try again');
console.error("The following error occured: ",errorThrown,jqXHR);
});
request.always(function () {
$inputs.prop("disabled", false);
});
// prevent default posting of form
e.preventDefault();
});
可能不会调用“完成”,因为会调用“失败”。 由于http请求本身似乎已经工作,另一个可能的问题是它没有返回正确的json内容,而回复被解释为正确的json内容(因为数据类型:“json”)
因此,您应该调查服务器返回的内容。问题可能是您没有发送完整的JSON。我从中输出结果
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("userID");
String password = request.getParameter("password");
System.out.println("GET");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
Gson gson = new Gson();
if(username.equals("aman") && password.equals("aman")){
out.println(gson.toJson(new Boolean("true")));
}else{
out.println(gson.toJson(new Boolean("false")));
}
out.close();
}
你所得到的只是“真”这个词。试着把它改成这样
out.println(gson.toJson(new Boolean("true")));
HashMap hm=newhashmap();
hm.put(“成功”,正确);
out.write(gson.toJson(hm));
运行时,我得到了{“success”:true},这是有效的JSON。我不知道为什么,但有时firebug断点给人的印象是request.done()中的代码没有执行。也许它只是被引导到控制台
尝试在firebug中不使用断点测试代码。检查错误。。。为什么会这样?不要使用request.done和fail尝试使用success和error,而是查看jquery ajax api的success和error我在问题中包含了firebug控制台日志,无法识别错误,如果有任何其他方法来识别错误,请提出来。Thanks@Abu我也尝试成功,它不是执行
HashMap<String, Boolean> hm = new HashMap<String, Boolean>();
hm.put("success", true);
out.write(gson.toJson(hm));