昨天做到删除模块,想要实现的功能是这样的:
点击删除按钮后实现后台数据库的删除功能,前端视觉上的删除很简单,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()} });
|
注意两点:
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();
|
然后还要实现ModelDriven接口中的方法:
1 2 3 4
|
@Override public Students getModel() { return this.students; }
|
ok,这样struts2就可以为我们自动获取前端传过来的参数了,前端可以将参数写在url后面,这么写:
字段名要和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