【问题标题】:Why ajax method calls error function?为什么ajax方法调用错误函数?
【发布时间】:2016-04-05 15:14:58
【问题描述】:

我有 jquery 脚本,它向 servlet 发送 ajax 请求。它可以工作,它将文本数据正确发布到servlet,但随后它调用错误函数,而不是成功函数(我检查过,servlet发送回ajax not null字符串)。

为什么ajax方法调用错误函数?

这是脚本代码

    $(document).ready(function () {
        $("#login-button").click(function () {
            var userPassword = $("input#userPassword").val();
            var userLogin = $("input#userLogin").val();
            $.ajax({
                type: "POST",
                url: "http://localhost:8181/library/login",
                data: {login: userLogin, password: userPassword},
                dataType: "text",
                success: function (data) {
                    if (data == "1") {
                        document.location.href = "http://localhost:8181/library/workshop.html";
                    }
                    if (data == "2") {
                        document.location.href = "http://localhost:8181/library/library.html";
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("Error report\n" + "jqXHR = " + jqXHR + "\n" + "textStatus = " + textStatus + "\n" +
                            "errorThrown =  " + errorThrown);
                }
            });
        });
    });

这里是servlet的代码

    public class LoginServlet extends HttpServlet {

@Override
public void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    PrintWriter out = response.getWriter();
    String login = request.getParameter("login");
    String password = request.getParameter("password");
    SocketConnection.output.println("log_in " + login + " " + password);
    out.print(SocketConnection.input.readLine());
    out.close();
        }

    }

错误报告中的textStatus值为error,errorThrown值为void。

【问题讨论】:

  • SocketConnection.output 存储与应用程序连接的内部逻辑,应用程序连接到数据库。
  • 你确定数据类型(文本)是否正确——“文本”:纯文本字符串。这将有助于证明来自服务器的内容实际上是一个字符串
  • SocketConnection.input.readLine() 返回string,作为ajax 中的数据类型,我可以从xmljsonscripthtmltext 中进行选择。我想,那javaString按照text,还是不正确?
  • 不确定 HttpServletRequest 是如何工作的 -- 在成功函数中尝试 --- cosole.log(data) --- 并将结果发布在 Q 中。使用浏览器上的 devtools 访问控制台
  • 但这是个问题,它不知何故永远无法达到成功功能。即使它正确发送数据。

标签: javascript java jquery ajax servlets


【解决方案1】:

如果它返回状态 200 您的函数包含以下设置

dataType: "text",

它可能没有发送文本。只是尝试删除此设置,我希望它会正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多