1、使用AJAX请求时,是无法在serlvet里面用response转发到别的页面的,AJAX只接受最后返回的值,也就是说AJAX只能通过在前端根据响应回来的值判断是否要跳转,然后用window.location.href = ”URL“;来跳转才行!

QQ图片20200722165140.png

2、使用AJAX请求发送参数时,注意参数之间一个空格都不能有!!!不然读取不到!

  1. //正确格式
  2. {"currentPage":1,"rows":5,"name":"小吴"}
  3. //错误格式
  4. {"currentPage" : 1, "rows" : 5, "name" : "小吴"}

3、要将JSON中的集合遍历,可以用for in

QQ图片20200725175602.png

list集合里面都是User对象

i 是每一个list集合中的对象的索引

data.list[i]就代表一个User对象!

4、使用AJAX每次点击查询时,都会保留有上一次查询的结果,怎么办呢?

使用==$(“#…”) . empty( )== 方法即可解决!该方法为清空指定的元素的内容!


6、!!!!!!!!!!!!!!!!!!!!!!!

如果使用AJAX返回的是数组或者集合,遍历的同时又要绑定一些单击事件时,就必须使用

$.each(data,function(index,value))
//data就是AJAX请求返回给前端页面的参数
//index是每一次遍历时的下标
//value是每一次遍历data的值
/*小技巧:全程不用value也行,直接用data配合i作为下标也可以获取到值哦!*/

用该方法遍历的好处是:各个遍历之间用function方法隔开,起到相互独立的作用!遍历之间不会互相干涉!也就是说,假如你在遍历数据的同时新增加“删除”按钮,那么,如果你要为这些“删除”按钮绑定单击事件的话,就必须用该方法遍历数据,然后才可以起到为每一个新增的“删除”按钮独立的绑定只属于它的单击事件!

而如果使用for in来遍历

for(var i in data)

要为在遍历的同时给新增加的按钮们绑定只属于它们的单击事件是不可能做到的!每次绑定的必定的遍历的最后的数据!别问我为什么知道!因为老子在这里踩了一天的坑!

总结:AJAX返回回来的数组或集合,全部使用$.each(data,function(index,value))来遍历!


7、使用JQuery的选择器时可以选择变量,方式为:

$("#"+变量)

并且,注意一个小技巧:这个变量通常是$.each(data, function(i, value))中的索引 i ,

而且,如果有时候要为多个标签绑定用 i 绑定不同的id,就可以用以下方式:

$("#"+变量+数字)
//比如:
$("#"+i+111)
$("#"+i+222)
//也就是说在i后面继续加上数字就可以区分开来了!简单!

8、在用append拼接标签时,标签内部的class、id属性是可以用变量作为属性值的,方式为:

$("#id").append("<td class="+变量+" id="+变量+" ……></td>")

9、关注与取消关注最好封装成方法!因为关注之后按钮要立即变成取消关注呢!所以只有封装成方法才可以相互嵌套,关注之后调用取消关注的方法,取消关注之后调用关注的方法!哈哈哈哈!

10、如果alert从AJAX响应回来的数据时,发现啥也没有,一片空白,那就是空字符串!!—> “”,我这里呢是查询文章时,查找不到就用这个空字符串做判断:

if(data == "") {
    ...
}

11、下载Excel的问题

        //Servlet里面的代码

        //设置字符格式
        request.getRequestDispatcher("utf-8");
        /**响应类型要有所改变*/
        response.setContentType("application/octet-stream;charset=UTF-8");

        //获取文章标题、作者、内容
        String title = request.getParameter("title");
        String author = request.getParameter("author");
        String content = request.getParameter("content");

        //创建excel工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();

        //创建工作表对象
        XSSFSheet sheet = workbook.createSheet(title);

        //创建第一行
        XSSFRow headRow = sheet.createRow(0);
        //创建标题
        headRow.createCell(0).setCellValue("标题");
        headRow.createCell(1).setCellValue("作者");
        headRow.createCell(2).setCellValue("文章内容");

        //创建第二行,写入当前文章的所有信息
        XSSFRow row = sheet.createRow(1);
        row.createCell(0).setCellValue(title);
        row.createCell(1).setCellValue(author);
        row.createCell(2).setCellValue(content);

        //设置生成的Excel的文件名,并以中文进行编码
        String FileName = new String(title.getBytes("gbk"), "iso-8859-1");
        response.setHeader("Content-Disposition", "attachment;filename=" + FileName + ".xlsx");

        //形成输出流
        ServletOutputStream outputStream = response.getOutputStream();

        //将工作簿对象写入到此输出流
        workbook.write(outputStream);

        //刷新此输出流并强制将所有缓冲的输出字节被写出
        outputStream.flush();
        //关闭资源
        outputStream.close();
        workbook.close();

注意:

1、使用AJAX下载文件可能有点麻烦,这里就不用了,直接点击按钮然后用window.location.href携带文章信息跳转到这个Servlet就可以了!

2、记得在Servlet里的一些编码之类的问题!

12、若要用按钮的点击事件来发送 AJAX 请求,一定要给按钮加一个value属性值,不然 AJAX 请求是发不过去的!!

image.png

13、从一个 jsp 页面也可以传一整个表单过去另一个 jsp 页面

image.png
image.png