使用jQuery和Ajax实现NullPointerException

使用jQuery和Ajax实现NullPointerException,jquery,ajax,jsp,servlets,Jquery,Ajax,Jsp,Servlets,这个问题困扰了我很长一段时间了。 我在.js文件中编写了如下代码:- var fname=$("#fname_ship").val(); var lname=$("#lname_ship").val(); 我确保我指的是正确的输入框ID。在我的$.ajax()方法中,我加入了如下内容:- data: {"Reason":"Insert","Fname":fname, "Lname" : lname} fname=request.getParameter("Fname"); lname=re

这个问题困扰了我很长一段时间了。 我在.js文件中编写了如下代码:-

var fname=$("#fname_ship").val();
var lname=$("#lname_ship").val();
我确保我指的是正确的输入框ID。在我的$.ajax()方法中,我加入了如下内容:-

data: {"Reason":"Insert","Fname":fname, "Lname" :  lname}
fname=request.getParameter("Fname");
lname=request.getParameter("Lname"); 
这些数据被传递到一个servlet,我在其中放入如下内容:-

data: {"Reason":"Insert","Fname":fname, "Lname" :  lname}
fname=request.getParameter("Fname");
lname=request.getParameter("Lname"); 
但是,“lname”始终包含空值。我已经检查了jsp中的输入框ID、my.js中的变量名和servlet中的变量名一百次,它们都匹配。然而,这个错误似乎并没有消失。 对一个类似问题的回答建议使用“jQuery”而不是$,但这也不起作用。 任何帮助都将不胜感激。 (为了更清晰,我在下面放了更大的代码块)

My.js:-

    var email=$("#email").val();
    var fname=$("#fname_ship").val();
    var lname=$("#lname_ship").val();
    var addr1=$("#address1").val();
    var addr2=$("#address2").val();
    var country=$("#country").val();
    var mob=$("#mobileNo_ship").val();
    var city=$("#city_ship").val(); 

    $.ajax({
        type: 'POST',
        url: "http://localhost:8085/Flopkart/verifyShippingAddress",
        data: {"Reason":"Insert","Email":email ,"Fname":fname, 
         "Lname" :  lname, "Addr1":addr1 ,"Addr2" : 
         addr2,"Country":country,
        "MobileNo":mob, "City":city},
当我将这些值传递给servelt时,“Lname”和“Addr1”都为null

我的servlet:-

 reason=request.getParameter("Reason");
 email=request.getParameter("Email"); 
 fname=request.getParameter("Fname");
 lname=request.getParameter("Lname");           
 addr1=request.getParameter("Addr1"); 
 addr2=request.getParameter("Addr2");          
 mobileNo=request.getParameter("MobileNo");

 country=request.getParameter("Country");           
 city=request.getParameter("City");

 System.out.println(fname);
 System.out.println(lname); //..NullPtrException
my.jsp的一部分:-

<div class="fields">
        <div class="six wide required field">
            <label>First Name</label> <input id="fname_ship" name="Fname"
            type="text" placeholder="First Name">

        </div>

        <div class="six wide required field">
            <label>Last Name</label> <input  id="lname_ship" name="LName" 
            type="text" placeholder="Last Name">
        </div>
 </div>

 <div class="fields">

        <div class="seven wide required field">
            <label>Shipping Address</label> 
            <input type="text" name="Address1" id="address1" 
            placeholder="Street Address">
        </div>

        <div class="six wide field">
            <label>Address 2</label> <input  id="address2" name="Address2" 
            type="text" placeholder="Address 2">
        </div>
        <div class="five wide required field">
            <label>City</label> <input  id="city_ship" name="City" 
            type="text" placeholder="City">
        </div>
   </div>

名字
姓
送货地址
地址2
城市

先填充数据,而不是像在ajax查询中那样键入json数据,这可能会解决您的问题。前

$(function() {
    $('#sub').on('click', function() {
    var email = $("#email").val();
    var fname = $("#fname_ship").val();
    var lname = $("#lname_ship").val();
    var addr1 = $("#address1").val();
    var addr2 = $("#address2").val();
    var country = $("#country").val();
    var mob = $("#mobileNo_ship").val();
    var city = $("#city_ship").val();

    var json = {};
    json['Reason'] = "Insert";
    json['Email'] = email;
    json['Fname'] = fname;
    json['Lname'] = lname;
    json['Addr1'] = addr1;
    json['Addr2'] = addr2;
    json['Country'] = country;
    json['MobileNo'] = mob;
    json['City'] = city;

    console.log(JSON.stringify(json));

    $.ajax({
      type: "POST",
      url: "someaction.do?action=saveData",
      data: JSON.stringify(json),
      dataType: application/json
    });        
  })
});

示例fiddle:

尝试:JSON.stringify({“Reason”:“Insert”,“Ema…”)您能否解释一下如何进行更详细的操作。我对此不熟悉。我如何在另一端(servlet)解析接收到的数据?您可以解析JSON字符串:JSONObject jObj=new JSONObject(request.getParameter)(..不。问题是请求参数被作为一个大的JSON字符串发送,而不是作为普通的请求参数。因此servlet无法以通常的方式将它们提取为请求参数。我通过以下其他帖子解决了这个问题。谢谢大家!