我试图通过ajax POST将表单提交给servlet,处理参数然后发送响应。总是最终给我一个错误。
表格html:
<form id="login" >
<div class="form-group">
<label for="username"> Username : </label>
<input id="username" name="username" type="text" class="form-control" placeholder="Name">
</div>
<div class="form-group">
<label for="password"> Password : </label>
<input id="password" type="password" name="password" class="form-control" placeholder="*******">
</div>
<button id="loginBtn" onclick="posaljiLogParametre()" value="Submit" class="btn btn-primary" type="submit"> Uloguj se </button>
</form>
Ajax帖子:
$.ajax({
type: "POST",
url: "LogInServlet",
dataType: 'text',
data: $("#login").serialize(),
success: function (data) {
$loginParagraf.css("display","block");
alert("DA");
},
error: function(data, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
alert(data.message);
}
});
Servlet:
String username = request.getParameter("username");
String pass = request.getParameter("password");
JSONObject jsonReply = new JSONObject();
System.out.println(username);
System.out.println(pass);
response.setStatus(200);
PrintWriter out = response.getWriter();
response.setContentType("application/json");
jsonReply.put("success",true);
jsonReply.put("message", "Please work this time");
System.out.println(jsonReply.toString());
out.print(jsonReply);
系统打印工作正常,用户名和密码将在控制台中打印出来。
答案 0 :(得分:0)
据我所知,我已经使用包含表单和ajax调用的index.jsp页面以及包含代码的doPost方法的servlet重新创建了您的设置。代码似乎按预期工作。我使用JSON消息得到了成功的响应。
我的第一个想法是将dataType:'text'更改为'json',但它似乎可以正常工作。
我必须围绕你的jsonReply.put语句包装一个try / catch(JSONException)来安抚编译器。
可能导致问题的一件事是您的表单包含一个提交按钮,该按钮将触发onclick事件并提交表单。我将其更改为type =“button”,以便只触发onclick事件。