吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1548|回复: 5
收起左侧

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

[复制链接]
yangwulang 发表于 2019-11-27 20:17
这是表单<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表单的数据
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 22:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表