yangwulang 发表于 2019-11-27 20:17

求助ajax请求不到后端tomcat地址

这是表单<form role="form" method="post" class="input-length">
    <div class="form-group">
      <input type="text" id="username" class="form-control input-bottom-length" name="username"
               placeholder="用户名">
      <input type="password" id="password" class="form-control input-bottom-length" name="password"
               placeholder="密码">
    </div>
    <a href="#" class="a-right-length">忘记密码</a><a href="#" class="">注册</a>
    <button class="btn form-control btn-info" onclick="send()" id="submits">提交</button>
</form>
这个是请求<script type="text/javascript">
    var username = document.getElementById("username");
    var password = document.getElementById("password");
    var user = {"username": username, "password": password};

    function send() {
      $.ajax({
            async: true,
            url: "/blogs_war/login",//URL没有变意味着我用同一个servlet哦,演示本例的时候吧之前的都注释掉了
            data: JSON.stringify(user),
            processData: false,
            success: function (data) {
                alert(data);
            },
            error: function (e) {
                alert(e);
            }
      })
    }
</script>后端无响应,附上代码,求助@WebServlet(name = "LoginServlet", urlPatterns = "/login")
public class LoginServlet extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      request.setCharacterEncoding("UTF-8");
      response.setContentType("text/json;charset=UTF-8");
      BufferedReader reader = new BufferedReader(request.getReader());
      String json = reader.readLine();
      List<Object> list = JSONArray.parseArray(json);
      System.out.println(list.get(0));
      System.out.println(list.get(1));


      String username = request.getParameter("username");
      String password = request.getParameter("password");
      System.out.println(username + "###" + password);
      Servce servce = new Servce();
      if (servce.login(response, username, password)) {
            request.getRequestDispatcher("/danshbod.html").forward(request, response);
      } else {
            response.getWriter().write(servce.getJson().toString());
            servce.getJson().remove("message");
      }
    }
}

BlueMoonWolf 发表于 2019-11-27 22:10

你的BufferedReader reader = new BufferedReader(request.getReader()); 这个方式应该拿不到任何东西吧。

你虽然是前端form表单。但是实际提交的时候没有表单提交,而是用ajax提交。。这里提交的文件头貌似不是json的吧。。
http://jquery.cuishifeng.cn/jQuery.Ajax.html
参考这个页面,搜索contentType 这个参数,你这默认是表单提交的话,这个方式应该是拿不到的。。


request.getParameter("username"); 这个方式应该能拿到。。

不过按你的说法。。你应该先试看url对不对。。把service里的代码注释掉,只是简单的打印看看能不能打印出来。。。


Guijing 发表于 2019-11-28 09:45

试试用浏览器按F12打开调试控制台看有没有请求失败

yangwulang 发表于 2019-11-28 17:10

Guijing 发表于 2019-11-28 09:45
试试用浏览器按F12打开调试控制台看有没有请求失败

感谢老哥的回复,不过是一个jquery包没有导,而且其中有form表单,默认以form表单提交,将form标签去掉再用Ajax传就可以

yangwulang 发表于 2019-11-28 17:12

BlueMoonWolf 发表于 2019-11-27 22:10
你的BufferedReader reader = new BufferedReader(request.getReader()); 这个方式应该拿不到任何东西吧。
...

感谢老哥的回复,不过是一个jquery包没有导,而且其中有form表单,默认以form表单提交,将form标签去掉再用Ajax传就可以

BlueMoonWolf 发表于 2019-11-28 23:30

yangwulang 发表于 2019-11-28 17:12
感谢老哥的回复,不过是一个jquery包没有导,而且其中有form表单,默认以form表单提交,将form标签去掉再 ...

不是,我记得form表单只有一个控件的时候才会默认变成提交的。。
多个貌似不会,你那个ajax的提交,默认也是form表单的application/x-www-form-urlencoded 格式的。。
我发的那个链接里contentType,也就是你那个$.ajax的参数之一。。指定提交的类型的,如果你要json要该这个。。。(就是你后台代码前部分转成json的那里。。JSONArrayn那部分。。我看这部分以为你要用json传数据),后半截倒是提取form表单的数据
页: [1]
查看完整版本: 求助ajax请求不到后端tomcat地址