请查看为什么ajax不能接受json返回的数据

请查看为什么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回答

代码逻辑是没有问题的,你在jsp页面中有没有导入jquery的包?因为没导入jquery的包是无法使用ajax的,你可以在浏览器中按F12进入控制台查看错误原因。祝学习愉快~

  • MixedEnger 提问者 #1
    <script type="text/javascript" src="<%=basePath%>/resources/js/jquery-1.4.2.js"></script> 有导入jquery包的,但是还是不行
    2018-07-14 01:11:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师