添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

昨天做到删除模块,想要实现的功能是这样的:
1

点击删除按钮后实现后台数据库的删除功能,前端视觉上的删除很简单,jQuery提供remove()函数,直接调用一下就好了,但是后台怎么删除?有很多方式,这里采用ajax提交数据。

我们知道ajax有GET和POST两种请求方式,POST其实就是向后台发送数据,ajax请求如下:

1
2
3
4
5
6
7
8
9
$.ajax({
type:"POST",
url:"deleteAction.action",
anync:true,
data:{"sid":$(obj).parents("tr").children().eq(0).html()}
//发送数据的类型,可以不写此项
//contentType:"application/x-www-form-urlencoded"

});

注意两点:
data参数的格式(之前一直没搞懂怎么往后台传数据,data参数格式怎么写,查了一天才算有点头绪){“par1”:par1,”par2”:par2…},还是成对写,前面是键后面是值,每对数据用逗号隔开. 键的名字要用引号括起来。

ok,走到这里有一个疑问,ajax请求转到action中,我们怎么接收它传过来的数据?

struts2中action接收参数有三种方式,分别是字段属性方式、域模型方式、模型驱动方式。( 参考地址 ),我觉着模型驱动比较好用。。所以写一下模型驱动的接收方式:

首先你的action要实现ModelDriven这个接口(注意泛型):

1
public class StudentsAction extends SuperAction implements ModelDriven<Students>

然后你的action类要有一个属性接收参数,可以看到模型驱动中的泛型是Students,所以要有一个Students类型的属性, 并且必须为这个属性提供seter和gerer方法!

1
2
private Students students = new Students();
//提供seter,geter方法

然后还要实现ModelDriven接口中的方法:

1
2
3
4
@Override
public Students getModel() {
return this.students;
}

ok,这样struts2就可以为我们自动获取前端传过来的参数了,前端可以将参数写在url后面,这么写:

1
url?sid=xx&sname=xx

字段名要和action中对应的实体类的属性相同!
字段名要和action中对应的实体类的属性相同!
字段名要和action中对应的实体类的属性相同!
重要的事情说3遍

然而我们是在ajax中请求的,所以data参数要这样写:

1
data:{"sid":$(obj).parents("tr").children().eq(0).html()}

这里利用jQuery提供的函数获得表单中当前行第一列的值。

下面还有一点说明,我们在ajax请求后台的数据的时候,有一个参数是这么写的:

1
contentType:"application/json"

然后当我写ajax往后台发送数据的代码时,直接把这句话 copy 过来了,然后数据一直传不过去, 查了好久才查到原来POST的时候ajax会默认给contentType赋值:

1
contentType:"application/x-www-form-urlencoded"

就是必须是上面的contentType类型才能POST
而GET的时候采用”application/json”(测试了一下当你使用”GET”方式时依然会默认设置。。)

所以,复制粘贴的时候,我们一定要弄清楚粘贴过来的到底是什么东西~

缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save

3、在根目录_config.yml里添加配置: jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true