【问题标题】:nullpointer in sending json data发送 json 数据时的空指针
【发布时间】:2018-11-08 00:32:52
【问题描述】:

我在将 json 数据从前端引导程序发送到 express servlet 时遇到问题。这是我尝试过的。我使用 ajax 将数据从我的表单发送到带有 json 的 servlet 类。请帮我解决这个问题。这是我的学生注册表格:

<html>
<head>
<link rel="stylesheet" type="text/css" href="resources/css/bootstrap.min.css">
<script type="text/javascript" src="resources/js/jquery.min.js"></script>
<script type="text/javascript" src="resources/js/bootstrap.min.js">   </script>
<script type="text/javascript">
    function registerStudent() {
        var firstName = $("#firstName").val();
        var lastname = $("#lastname").val();
        var phone = $("#phone").val();
        var email = $("#email").val();
        var studentCode = $("#studentCode").val();
        $.ajax({
            type : "POST",
            url : "/RegisterStudent",
            data :{data: "firstName=" + firstName + "lastname=" + lastname + " phone=" +  phone + "email=" + email+"studentCode"+studentCode},
            success : function(data) {
                var ht = data.msg;
                $("#resp").html(ht);
            },
            error : function(data) {
                alert("Some error occured.");
            }
        });
    }
</script>
</head>
<body>

<div class="container">

<div class="card " style="width:750px;margin:0px auto">


    <div class="card-header">Student Register</div>

    <div class="card-body">


        <form data-toggle="validator" role="form" method="post" >


            <div class="form-group">

                <label class="control-label" for="firstName">Name</label>

                <input class="form-control" data-error="Please enter name field." id="firstName" placeholder="Name"  type="text" required />

                <div class="help-block with-errors"></div>

            </div>


            <div class="form-group">

                <label for="lastname" class="control-label">lastname</label>

                <input type="text" class="form-control"   id="lastname" placeholder="lastname" required>

                <div class="help-block with-errors"></div>

            </div>


            <div class="form-group">

                <label for="phone" class="control-label">phone</label>

                <div class="form-group">

                    <input type="text" data-minlength="5" class="form-control" id="phone" data-error="fill your phone" placeholder="phone" required>

                    <div class="help-block with-errors"></div>

                </div>

            </div>


            <div class="form-group">

                <label class="control-label" for="email">email</label>

                <textarea class="form-control" data-error="Please enter email field." id="email" placeholder="email" required=""></textarea>

                <div class="help-block with-errors"></div>

            </div>

            <div class="form-group">

                <label for="studentCode" class="control-label">studentCode</label>

                <div class="form-group">

                    <input type="text"  class="form-control" id="studentCode" data-error="fill your studentCode" placeholder="studentCode" required>

                    <div class="help-block with-errors"></div>

                </div>

            </div>


        </form>
    </div>
    <button onclick="registerStudent();" type="button" class="btn btn-success btn-block">Register</button>
    <div class="text-center" id="resp" style="margin-top: 14px;"></div>
</div>
</div> 

这是我将数据发送到数据库的 servlet 类。

@WebServlet(urlPatterns = "/RegisterStudent")
public class RegisterStudentController extends HttpServlet {
StudentServiceInter service = new StudentServiceImpl();
ObjectMapper mapper = new ObjectMapper();
String json = "";

protected void doGet(HttpServletRequest req, HttpServletResponse resp)    throws ServletException, IOException {
    Student student = new Student();
    req.getSession().setAttribute("student", student);
    resp.sendRedirect("/addStudent.jsp");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String jsonData = req.getParameter("data");
    resp.setContentType("application/json");
    PrintWriter out = resp.getWriter();
    out.println(jsonData);
    out.close();
}
}

【问题讨论】:

  • 您是否收到此警报(“发生了一些错误。”);?如果没有,你能检查一下你是否要去那个网址吗?
  • @BILALMALIK 是的,我收到了这个警报

标签: java mysql json ajax hibernate


【解决方案1】:

试试这个...

 $.ajax({
                            type: 'GET',
                            url: '<?php echo base_url(); ?>"/RegisterStudent"', // your syntax
                            data: {
                                'firstName ': firstName ,
                                'lastName'  :lastname,
                                'phone': phone,
                                'email' : email,
                                'studentCode' : studentCode,

                            },
                           success : function(data) {
                    var ht = data.msg;
                    $("#resp").html(ht);
                },
                error : function(data) {
                    alert("Some error occured.");
                }
                        });

【讨论】:

    【解决方案2】:

    一个问题是,客户端,您没有创建 json,而服务器端您尝试解析 json。 Json 格式没有equal (=) 符号。

    一个有效的对象是:

    data = {
        data: {
            firstName: 'Name',
            lastName: 'Surname',
            phone: '123-4456',
            email: 'a@b.c',
            studentCode: 12345
        }
    };
    

    在发送之前你应该做JSON.stringify(data)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-10
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      相关资源
      最近更新 更多