我提交了一段数据,然后跳转到SERVLET中执行后会得到7个左右的数据,我想把他返回回来并且能够在页面显示出来,请高人指点下,以下是我的代码:JSP页面:
<body>
    <center>
   <table border="1">
   <form action="" >
   <tr>
   <td>
     <font >请输入数字:</font> <br>
     <input type="text" id="pin" name="pincode" value="" maxlength="13" onkeypress="enterDown()" />
     <input type="submit" value="提交" id="subfind">
     </td>
    </tr>
    </form>
</table>
    <div id="dataDiv"></div>
    <br>
    <a href="Login.jsp">返回到登陆界面</a>
    </center>
  </body>JS代码:function enterDown () {
if(event.keyCode=="13")event.returnValue = false; 
}$(document).ready(function(){
$("#subfind").click(function(){
var pin = $("#pin").val();
if (pin.length < 13){
alert("请输入PIN");
return
}
else {
$.ajax({
type: "post",
url: "CheckPinCodeServlet", 
data: $('form').serialize(),
success: function(data){
var jsonvars = data.mydata;
alert(jsonvars.length);//我在这里想用alert测试下有没有取到值,但是发现没有值。。
for (var i = 0 ; i < jsonvars.length ; i++) {
$("#dataDiv").append+"<div>"+jsonvars[i].pin1+jsonvars [i].name1+jsonvars[i].address+jsonvars[i].postcode1+jsonvars[i].mobilephone1+jsonvars[i].telephone1+jsonvars[i].idcard1+jsonvars[i].re1+"</div>";
}
}
});
}
});
});servlet中的代码:public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
String pin = request.getParameter("pincode"); JSONObject json = new JSONObject();    
JSONObject member = new JSONObject();

UserInfo userInfo = new UserInfo();
UserDao userDao = new UserDao();
userDao = userInfo.isExistInfo(pin);

member.put("pin1", pin);
member.put("name1", userDao.getName());
member.put("address1", userDao.getAddress());
member.put("postcode1", userDao.getPostcode());
member.put("mobilephone1", userDao.getMobilePhone());
member.put("telephone1", userDao.getTelePhone());
member.put("idcard1", userDao.getIdCard());
member.put("re1", userDao.getRe());

json.put("mydata", member);

PrintWriter out = response.getWriter();
out.print(json.toString());
out.close();
}
想请问下我这个哪里有问题了?userdao的值我试过都是有的~~请高人指点我下哪里有问题?怎么修改额?

解决方案 »

  1.   


    UserInfo user = new UserInfo();
    user.setName("ludwik");

    JSONObject json = JSONObject.fromObject(user);
      

  2.   

    如果这样写,在js代码中我该怎么拿出来呢?
    $("#dataDiv").append+"<div>"+jsonvars[i].pin1这个方法就不行了吧?
      

  3.   


    $.ajax({
    type: "post",
    dataType:'json',//指定一下数据格式
    url: "CheckPinCodeServlet",  
    data: $('form').serialize(),
    success: function(data){
        alert(data.name);//已经指定格式,直接使用(如果是list的话,就用数组方式访问data[0].name);
    }
    });
      

  4.   

    我试了下还是不行我拿出来的:undefinded
    我把我修改的代码贴出来:
    servlet代码:
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
    String pin = request.getParameter("pincode");
    UserInfo userInfo = new UserInfo();
    UserDao userDao = new UserDao();
    userDao = userInfo.isExistInfo(pin);
    JSONObject json = JSONObject.fromObject(userDao);
    PrintWriter out = response.getWriter();
    out.print(json.toString());
    out.close();
    }
    js代码:
    $(document).ready(function(){
    $("#subfind").click(function(){
    var pin = $("#pin").val();
    if (pin.length < 13){
    alert("请输入PIN");
    return
    }
    else {
    $.ajax({
    type: "post",
    url: "CheckPinCodeServlet", 
    data: $('form').serialize(),
    success: function(data){
    alert (data.name);
    }
    });
    }
    });
    });
    这样的话还是跳:undefinded然后我用了你说的指定一下数据格式:
    js变成:$(document).ready(function(){
    $("#subfind").click(function(){
    var pin = $("#pin").val();
    if (pin.length < 13){
    alert("请输入PIN");
    return
    }
    else {
    $.ajax({
    type: "post",
    dataType:"json",
    url: "CheckPinCodeServlet", 
    data: $('form').serialize(),
    success: function(data){
    alert (data.name);
    }
    });
    }
    });
    });
    这样写的话直接什么都没了。是不是有哪里写错了?
      

  5.   

    强烈建议chrome 或者 FF 浏览器进行debug,这种问题一眼看不出来,再说代码很多 很难定位错误。http://www.happyalaric.com  
      

  6.   

    我用的是chrome ,我调试到data那里就说取的是null。。
      

  7.   

    UserInfo userInfo = new UserInfo();
    UserDao userDao = new UserDao();
    userDao = userInfo.isExistInfo(pin);
    你这几行代码是怎么回事?UserInfo不是bean?
    UserDao不应该是数据方位层代码吗?
    userDao = userInfo.isExistInfo(pin);
    你这行让我百思不得其解。
    又看了你这几行代码
    member.put("pin1", pin);
    member.put("name1", userDao.getName());
    member.put("address1", userDao.getAddress());
    member.put("postcode1", userDao.getPostcode());
    member.put("mobilephone1", userDao.getMobilePhone());
    member.put("telephone1", userDao.getTelePhone());
    member.put("idcard1", userDao.getIdCard());
    member.put("re1", userDao.getRe());
    我可以确定,你把数据访问层和bean这两个概念弄反了。
    不过这也不是问题所在,首先你得debug看看后台UserDao是否有值,然后检查js代码是否有中文字符(:和,之类的是否有中文字符),实在不行用这个函数试试$.getJSON(data);
      

  8.   

    不是呀,我有个userdao,然后userinfo是我的逻辑层。我userinfo传入一串数字,然后会从数据库中得到一些信息,然后我把这些信息在逻辑层里加入到userdao中,所以外面直接把拿到的数据赋予给新实例的userdao了呀。
      

  9.   

    首先你吖的就没有指定传输数据格式
    其次你看有没有值先从后台打断点调试,最后print到前台页面的时候再看有没有值
      

  10.   

    我第二次的时候指定了呀。。
    $.ajax({
     type: "post",
     dataType:"json",
     url: "CheckPinCodeServlet",  
    data: $('form').serialize(),
     success: function(data){dataType:"json",这个应该是吧?