后端代码:
//省略引用
@Controller
@AllArgsConstructor
public class DeleteController {
private final EmployeeMapper employeeMapper;
@ResponseBody //@ResponseBody的作用是使返回值字符串略过视图解析器的处理,直接返回给前端
@DeleteMapping("/del_company")
public String DelCompany(int id) {
System.out.println(id);
boolean isSuc = employeeMapper.delCompany(id);
return "{\"del\":"+ Boolean.toString(isSuc) +"}";
return "{\"del\":"+ Boolean.toString(false) +"}";
}
}
其中:
@ResponseBody的作用是使返回值字符串略过视图解析器的处理,直接返回给前端
del键必须被转移的冒号(\")包裹,否则在前端js中无法通过JSON.parse()解析。
传递到前端的Json字符串是:{"del":false}
前端代码:
// 省略html代码
$.ajax({
type: 'DELETE',// 常见的type: 'POST',这里用DELETE替换
url: "[[@{/del_company}]]",
data: {id: id}, //{id: id,_method:'delete'} 我测试_method:'delete'不起作用
success: function(data){
console.log(data);
console.log(JSON.parse(data));
let f = JSON.parse(data);
console.log(f);
if (f.del) {
alert("删除成功");
//location.reload();
} else {
alert("删除失败");
//location.reload();
}
},
error: function(data){
console.log(data);
}
});
其中:
常见的type: 'POST',这里用DELETE替换
data: {id: id,_method:'delete'} 我测试_method:'delete'不起作用,最后删掉了
在找到正确方法前,错误的尝试:只返回布尔值,结果无论返回true还是false,前台if(f)判断都是true
//省略引用
@Controller
@AllArgsConstructor
public class DeleteController {
private final EmployeeMapper employeeMapper;
@ResponseBody //@ResponseBody的作用是使返回值字符串略过视图解析器的处理,直接返回给前端
@DeleteMapping("/del_company")
public String DelCompany(int id) {
System.out.println(id);
boolean isSuc = employeeMapper.delCompany(id);
return isSuc;
}
}
// 省略html代码
$.ajax({
type: 'DELETE',// 常见的type: 'POST',这里用DELETE替换
url: "[[@{/del_company}]]",
data: {id: id}, //{id: id,_method:'delete'} 我测试_method:'delete'不起作用
success: function(data){
if (data) {
alert("删除成功");
//location.reload();
} else {
alert("删除失败");
//location.reload();
}
},
error: function(data){
console.log(data);
}
});