后端JSON字符串传入前端遇到问题

后端代码:

List<Book> bookList = new ArrayList<>();
Book book1 = new Book();
book1.setBookID("1");
book1.setBookname("数据结构");
book1.setPrice(30);
book1.setNum(1);
bookList.add(book1);
Book book2 = new Book();
book2.setBookID("2");
book2.setBookname("C程序设计");
book2.setPrice(20);
book2.setNum(1);
bookList.add(book2);
Book book3 = new Book();
book3.setBookID("3");
book3.setBookname("数据通信");
book3.setPrice(35);
book3.setNum(1);
bookList.add(book3);

resp.setContentType("application/json");
PrintWriter writer = resp.getWriter();
writer.write(JSONArray.toJSONString(bookList));
writer.flush();
writer.close();

前端Ajax接收JSON
$.ajax({
url:"/Display",
type:"post",
dataType:"json",
success:function (books) {
var jsonObjk = JSON.stringify(books)
var jsonObj = JSON.parse(jsonObjk);
//表格动态加一行,数据由jsonObj提供
for (var row in jsonObj){
//对于JSON数组中的每一个JSON对象,在指定表格中增加一行并插入数据
$("#table").append("<tr><td><input type='radio' value="+jsonObj[row].bookID+" name='book'></td> <td>"+jsonObj[row].bookID+"</td><td>"
+jsonObj[row].bookname+"</td><td>"
+jsonObj[row].price+"</td><td>"
+jsonObj[row].num+"</td></tr>");
}
}
})
这里接收到的JSON数据books,对于books是Object类型的数据,而JSON.parse()传入参数须为String类型数据,前端会报错Uncaught SyntaxError
解决方案:可利用JSON.Stringify()转换为字符串,然后再利用JSON.parse()将其转换为JS对象即可。
posted @ 2022-08-28 14:27  三思落  阅读(172)  评论(0)    收藏  举报