Ajax POST总是返回错误

时间:2014-08-16 16:14:16

标签: javascript jquery ajax servlets

我试图通过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);

系统打印工作正常,用户名和密码将在控制台中打印出来。

1 个答案:

答案 0 :(得分:0)

据我所知,我已经使用包含表单和ajax调用的index.jsp页面以及包含代码的doPost方法的servlet重新创建了您的设置。代码似乎按预期工作。我使用JSON消息得到了成功的响应。

我的第一个想法是将dataType:'text'更改为'json',但它似乎可以正常工作。

我必须围绕你的jsonReply.put语句包装一个try / catch(JSONException)来安抚编译器。

可能导致问题的一件事是您的表单包含一个提交按钮,该按钮将触发onclick事件并提交表单。我将其更改为type =“button”,以便只触发onclick事件。