微信小程序,前端收不到后端传过来的值,找了一下午了,比知道怎么改

发布于 2022-09-12 03:52:07 字数 2537 浏览 18 评论 0

前端要收到后端的bmid然后通过bmid显示数据库中一条记录的多张图片,现在收不到,前端显示错误

GET http://localhost:8080/bm2001/getOne?bmid=undefined 500 (Internal Server Error)
Setting data field "ps" to undefined is invalid.
后端显示错误:
Servlet.service()引发异常
java.lang.NumberFormatException: For input string: "undefined"

onLoad: function (options) {
    var id=options.bmid;

    var _this=this;

    wx.request({
      url: 'http://localhost:8080/bm2001/getOne?bmid='+id,//根据bmid查询到保姆的所有信息
      success:function(res){
          console.log(res.data);

         var ps= res.data.imgs;//保姆的所有图片
          _this.setData({"ps":ps})
      } 
    })
    
  },
@WebServlet("/getOne")
public class GetOneServlet extends HttpServlet {



public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        Connection conn = DBUtils.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;

        String id = request.getParameter("bmid");
        int bmid = Integer.parseInt(id);

        try {

            ps = conn.prepareStatement("select * from bm where bmid=?");
            ps.setInt(1, bmid);
            
            rs=ps.executeQuery();
            Bm bm = null;        
            
            while(rs.next()) {
                String name = rs.getString(2);
                int age = rs.getInt(3);
                String gender = rs.getString(4);
                int year=rs.getInt(5);
                int money = rs.getInt(6);
                String edu = rs.getString(7);
                String home = rs.getString(8);
                String work=rs.getString(9);
                String imgurl=rs.getString(10);
                String [] imgs = imgurl.split(",");
                
                bm = new Bm(bmid, name, age, gender, year, money, edu, home, work, imgs);
                
                
            }
            
            Gson g = new Gson();
            String json = g.toJson(bm);
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().print(json);
            
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    
    
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒绊 2022-09-19 03:52:07

当前的问题并不在于前端是否接收到了后台的信息,而是在于前台向后台请求信息的时候参数bmid的值错了:

onLoad: function (options) {
    // 问题在这 ---- options中并没有bmid的值!id的值将是undefined
    var id=options.bmid;
      
      // 所以以时发起的请求地址实际为:http://localhost:8080/bm2001/getOne?bmid=undefined
      url: 'http://localhost:8080/bm2001/getOne?bmid='+id,//根据bmid查询到保姆的所有信息

我猜你可能是对HTTP异步请求没有理解太好。
你前面的代码可能是这样的:

getBmid: function() {
 wx.request({
      url: 'xxx', // 请求Bmid
      success:function(res){
        return res;
      } 
    })

...
options.bmid = getBmid();
onLoad(options);

上述方法是将导致options.bmid的值为undefined ,正确的打卡方式应该是这样的:

getBmid: function(callback) {
 wx.request({
      url: 'xxx', // 请求Bmid
      success:function(res){
        if (callback) {
            callback(res);
        }
      } 
    })

...
getBmid(function(bmid) {
     options.bmid = bmid;
     onLoad(options);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文