m0_57034245 2021-08-04 22:01 采纳率: 75%
浏览 69
已结题

求解为什么我用jQuery优化下的Ajax进行局部刷新操作时前端接收不到数据?

以下为我的代码,

1、servlet中的doGet方法:

protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        Student s1 = new Student("马迪", 27);
        Student s2 = new Student("王子琦", 26);
       
        String str = "{\"s1\":{\"name\":\""+s1.getName()
                +"\",\"age\":"+s1.getAge()
                +"},\"s2\":{\"name\":\"\",\"age\":"+s2.getAge()+",\"sex\":"+"}}";  //用json传递参数

        PrintWriter pw = response.getWriter();
        pw.println(str);
        pw.flush();
        pw.close();
    }

2、web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>com.bjpowernode.controller.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/JsonServlet</url-pattern>
    </servlet-mapping>
</web-app>

3、前端jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <script type="text/javascript"></script>
    <script src="js/jquery-3.4.1.js">
      $(function () {
        $("#myJson").click(function () {
          $.ajax({
            url:"JsonServlet",
            type:"get",
            dataType:"json",
            success:function (data) {
              $("#name1").html(data.s1.id);
              $("#age1").html(data.s1.age);

              $("#name2").html(data.s2.id);
              $("#age2").html(data.s2.age);
            }
          })
        })
      })
    </script>
    <title>json</title>

  </head>
  <body>
    <button id="myJson">点击</button>
    <br>
    <br>
    <br>
    学员1:<br>
    姓名:<span id="name1"></span><br>
    年龄:<span id="age1"></span><br>

    <br>
    <br>
    学员2:<br>
    姓名:<span id="name2"></span><br>
    年龄:<span id="age2"></span><br>

  </body>
</html>


以上是我的代码,最后在网页上的效果就是点按钮没反应
img

调后台信息显示一个404报错,不知是何原因,求解!!
img

  • 写回答

3条回答 默认 最新

  • CSDN专家-微编程 2021-08-05 07:08
    关注

    哪有你这样写的呀,你的点击事件都执行不了吧?点击无效果,你的404只是图标有问题,不影响程序,你真正有问题的是你的jquery写错地方啦,一个声明用来引用jquery,一个用来写jquery
    img
    真正应该是这样写的

    
    <script src="js/jquery-3.4.1.js">
      </script>
      <script type="text/javascript">
        $(function () {
          $("#myJson").click(function () {
            $.ajax({
              url:"JsonServlet",
              type:"get",
              dataType: 'json',
              success:function (data) {
                console.log(data);
                $("#name1").html(data.s1.name);
                $("#age1").html(data.s1.age);
                $("#name2").html(data.s2.name);
                $("#age2").html(data.s2.age);
              }
            })
          })
        })
      </script>
    

    还有你的数据都不是json,你仔细看看,很多地方都错了还没写对,比如性别虽然没有,但你至少给它赋值为空字符串啊,s2的名字你也没有写。。。这是我给你改的

     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            Student s1 = new Student("madi", 27);
            Student s2 = new Student("lala", 26);
    
            String str = "{\"s1\":{\"name\":\""+s1.getName()
                    +"\",\"age\":"+s1.getAge()
                    +"},\"s2\":{\"name\":\""+s2.getName()+"\",\"age\":"+s2.getAge()+",\"sex\":"+"\"\"}}";  //用json传递参数
    
            PrintWriter pw = resp.getWriter();
            pw.println(str);
            pw.flush();
            pw.close();
        }
    
    

    演示结果

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月5日
  • 创建了问题 8月4日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来