请查看为什么ajax不能接受json返回的数据
烦请老师检查代码:我在searchbook 的servlet中可以打印出搜索的结果,说明servlet本身应该没错,不明白为什么json返回的数值取不出来,还有怎么打印ajax的数据,便于debug?
用flag尝试测试也不能跳转页面。
这是我的searchbook jsp的代码
<body> <center> <h1>图书查询</h1> <p> 图书ID:<input type="text" name="bookID"> 图书名:<input type="text" name="bookName"> 分类:<input type="text" name="catgoryName"> <input type="button" value="查询" id="search"> </p> <hr> <table width="800px" cellspacing="0px" cellpadding="0px" border="1px"> <thead> <tr> <th>图书ID</th> <th>书名</th> <th>分类</th> <th>价格</th> <th>描述</th> </tr> </thead> <tbody id="cont"> <c:forEach items="${booklist }" var="book"> <tr> <td>${book.getId()}</td> <td>${book.getBookName()}</td> <td>${book.getCatgoryName()}</td> <td>${book.getPrice()}</td> <td>${book.getDescride()}</td> </tr> </c:forEach> </tbody> </table> </center> </body> <script type="text/javascript" > $("#search").click(function(){ //单击查询按钮的时候触发ajax事件 $.ajax({ url:"<%=basePath%>/searchBook", type:"post", data:{ bookID:$("input[name=bookID]").val(), bookName:$("input[name=bookName]").val(), catgoryName:$("input[name=catgoryName]").val() }, dataType:"json", success:function(result){//result里封装了servlet给ajax返回的结果 /*var flag=result.flag; if(flag==true) { //System.out.println("json返回成功!"); response.sendRedirect(request.getContextPath()+"/BookManage/showBooks.jsp"); }*/ var list= eval(result); var s = null; for (var i in list){ var id = list[i].id; var bookName = list[i].bookname; var bookCategory = list[i].bookCategory; var price = list[i].price; var description = list[i].description; s = s+ "<tr><td>" + id +"</td><td>"+bookname+"</td><td>"+bookcategory+"</td><td>"+price+"</td><td>"+ description+ "</td></tr>"; $("#cont>tr").remove(); } $("#cont").html(s); } }); }); </script>
这是我的searchbook servlet代码:
public class searchBook extends HttpServlet { public List<Book> booklist; public List<Book> result; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String bookID = request.getParameter("bookID"); String bookName = request.getParameter("bookName"); String catgoryName = request.getParameter("catgoryName"); //System.out.println("bookID "+bookID+"bookName "+bookName+" catgoryName "+catgoryName); if(request.getSession().getAttribute("booklist")!=null) { booklist= (List<Book>) request.getSession().getAttribute("booklist"); } result=new ArrayList<>(); for(Book b: booklist) { if(b.getBookname().equals(bookName)||b.getCatgoryName().equals(catgoryName)||(b.getId()+"").equals(bookID)) result.add(b); } for(Book b:result) { System.out.println(b.toString()); } //JSONObject jsonobject= new JSONObject("{flag:true}"); JSONArray jsonarray= new JSONArray(result); //response.getOutputStream().write(jsonobject.toString().getBytes("UTF-8")); response.getOutputStream().write(jsonarray.toString().getBytes("UTF-8")); //response.sendRedirect(request.getContextPath()+"/BookManage/searchBooks.jsp"); }
1
收起
正在回答
1回答
代码逻辑是没有问题的,你在jsp页面中有没有导入jquery的包?因为没导入jquery的包是无法使用ajax的,你可以在浏览器中按F12进入控制台查看错误原因。祝学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星