为了账号安全,请及时绑定邮箱和手机立即绑定

在 JSP 中看不到 Json 数据结果

在 JSP 中看不到 Json 数据结果

qq_花开花谢_0 2022-01-07 10:34:37
在我的 .JSP 文件中,我有:<form id="form">    <input type="text" name="name" id="name"><br><br>    <input type="text" name="address" id="address"><br><br>    <input value="Submit" type="submit" onclick="submitform()"></form><p id="result"></p></body>我的Javascript函数是:function submitform(){var  userName = $('#name').val();var  userAdd = $('#address').val();var myVar = JSON.stringify({name: userName, address:userAdd});        $ajax({            url: 'jsonserverlet',            type: 'POST',            data: 'per=' + myVar,            dataType: 'json',            success:function(data){            var json= JSON.stringify(data);            alert(json + " " + data.name + " " + data.address);            $("#result").html(data.name + " " + data.address);            }        });};我还创建了一个带有一些数据的新类 User.java ,然后在我的 Jsoncontent.java 中,在方法 POST 中我设置了我的变量并创建了一个对 json 的请求,如下所示:        String jsonData = request.getParameter("per");        System.out.println(jsonData);        Gson gson = new Gson();        User data = gson.fromJson(jsonData, User.class);        System.out.println("Fetching json object");        String name = data.getName();        String address = data.getAddress();        System.out.println("User Name: "+ name );        System.out.println("User Address: "+ address );        User user = new User();        user.setName(name);        user.setAddress(address);        String jsonObj = gson.toJson(user);        System.out.println(jsonObj);        out.print(jsonObj); 因此,所有工作都没有错误或警告,但是当我单击提交按钮时我看不到结果。我不知道为什么。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您在对另一个答案的评论中注意到,我仍然有一个白色的浏览器页面,但没有名称和地址,这表明浏览器正在远离您当前正在查看的页面,因此,您没有发出 Ajax 请求 - 或由于您没有禁用默认提交事件,您更有可能发出 Ajax 请求,但同时也发出标准 HTTP Post 请求。


因此,您需要禁用默认提交操作。


https://api.jquery.com/event.preventdefault/ https://www.w3schools.com/jquery/event_preventdefault.asp


<form id="form">

    <input type="text" name="name" id="name"><br><br>

    <input type="text" name="address" id="address"><br><br>

    <input value="Submit" id="submit" type="submit">

</form>

<p id="result"></p>

</body>



$('#submit').click(function(e){

    e.preventDefault(); //prevent standard post


        $.ajax({

            url: 'jsonserverlet',

            type: 'POST',

            data: $("#form").serialize(),

            dataType: 'json',


            success:function(data){

            var json= JSON.stringify(data);

            alert(json + " " + data.name + " " + data.address);

            $("#result").html(data.name + " " + data.address);

            }

        });

})


查看完整回答
反对 回复 2022-01-07
?
LEATH

TA贡献1936条经验 获得超6个赞

你错过了重点:你有 $ajax 但应该是$.ajax


您也可以提交表单而不是 json,例如:


function submitform(){

        $.ajax({

            url: 'jsonserverlet',

            type: 'POST',

            data: $("#form").serialize(),

            dataType: 'json',


            success:function(data){

            var json= JSON.stringify(data);

            alert(json + " " + data.name + " " + data.address);

            $("#result").html(data.name + " " + data.address);

            }

        });

}

并在 servlet 中获取参数“名称”和“地址”:


public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws IOException {

    ...

    String name = request.getParameter("name");

    String address = request.getParameter("address");

    ...

}

答案的变化


抱歉,我只关注警报消息的结论。Alan Hay 说得对,您可以使用它或将类型更改为按钮。无论如何,这是工作代码


Servlet.java


import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.PrintWriter;


@WebServlet(urlPatterns = "/jsonserverlet")

public class Servlet extends HttpServlet {


    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String jsonData = request.getParameter("per");

        out.print(jsonData);

    }

}

索引.jsp


<html>

<head>

        <script src="http://code.jquery.com/jquery-2.2.4.js"

         type="text/javascript"></script>

</head>

<body>

        <form id="form">

            <input type="text" name="name" id="name"><br><br>

            <input type="text" name="address" id="address"><br><br>

            <input value="Submit" type="button" onclick="submitform()">

        </form>

        <p id="result"></p>

</body>

<script>

function submitform(){

var  userName = $('#name').val();

var  userAdd = $('#address').val();


var myVar = JSON.stringify({name: userName, address:userAdd});

        $.ajax({

            url: 'jsonserverlet',

            type: 'POST',

            data: 'per=' + myVar,

            dataType: 'json',


            success:function(data){


            var json= JSON.stringify(data);

            alert(json + " " + data.name + " " + data.address);

            $("#result").html(data.name + " " + data.address);

            }

        });

}

</script>

</html>


查看完整回答
反对 回复 2022-01-07
  • 2 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信