第一种传值:

controller中是几个单独的基本类型参数

@RequestMapping("update")

@ResponseBody//此注解不能省略 否则ajax无法接受返回值

public Map update(Long num, Long id, BigDecimal amount){

Map resultMap = new HashMap();

if(num == null || id == null || amount == null){

resultMap.put("result", "参数不合法!");

return resultMap;

} //xxx逻辑处理

resultMap.put("result", "操作成功");

return resultMap;

}

var params = {};

//params.XX必须与controller中的参数名称一致

//否则在controller中使用@RequestParam绑定

params.num = num;

params.id = id;

params.amount = amount;

$.ajax({

async:false,

type: "POST",

url: "price/update",//注意路径

data:params,

dataType:"json",

success:function(data){

if(data.result==‘SUCCESS‘){

alert("修改成功");

}else{

alert("修改失败,失败原因【" + data + "】");

}

},

error:function(data){

alert(data.result);

}

});

第二种传值:

controller中是参数是实体bean,bean中属性都是基本数据类型

@RequestMapping("add")

@ResponseBody

public Map add(DataVo dataVo){

Map result = null;

if(dataVo.getNum() == null || StringUtils.isBlank(dataVo.geId())){

result = new HashMap();

result.put("msg", "参数不合法!");

return result;

}

//xxx业务逻辑处理

return result;

}

public class DataVo {

private Long num;

private String id;

getset方法

}

var params = {};

params.num = $("#num").val();

params.id = $("#id").val();//注意params.名称 名称与实体bean中名称一致

$.ajax({

type: "POST",

url: "price/add",

data:params,

dataType:"json",

//contentType: "application/json; charset=utf-8",//此处不能设置,否则后台无法接值

success:function(data){

if(data.msg != ""){

alert( data.msg );

}

},

error:function(data){

alert("出现异常,异常原因【" + data + "】!");

}

});

第三种传值:

controller中是参数是实体bean,bean中属性有数组

@RequestMapping("add")

@ResponseBody//此处不能省略 否则ajax无法解析返回值

public Map add(@RequestBody DataVo dataVo){//@RequestBody注解不能省略,否则无法接值

Map resultMap = new HashMap();

//业务逻辑处理

return resultMap;

}

public class DataVo {

private BigDecimal[] nums;

private String id;

getset方法

}

jquery ajax 需要jquery json的插件 进行json序列化,我这里使用了json.js

且配置

datatype:"json",

contentType: "application/json; charset=utf-8",

var params = {};

params.nums = [];

params.id = $("#id").val();//parmas.参数名 注意与实体bean参数名称相同

var prices = document.getElementsByName("prices");//prices 是name="prices"一组input标签

for (var i = 0; i < prices.length; i++) {

params.nums[i] = prices[i].value;

}

$.ajax({

type: "POST",

url: "price/add",

data:JSON.stringify(params),//json序列化

datatype:"json", //此处不能省略

contentType: "application/json; charset=utf-8",//此处不能省略

success:function(data){

alert(data);

},

error:function(data){

alert(data)

}

});

实现一个插入图表的功能,图表的属性包括名称,类型和网址

$(function () {

$(‘#addModal .addbtn‘).on(‘click‘, function (e) {

var form = $(e.currentTarget).parents(‘.modal‘).find(‘form‘);

var data = {

name: form.find(‘input‘)[1].value,

type: form.find(‘input‘)[0].value,

src: form.find(‘input‘)[2].value

};

$.ajax({

contentType: "application/json;charset=utf-8",

url: "/api/charts",

type: "post",

data: JSON.stringify(data),

success: function (data) {

console.log(data);

}

})

})

})

//添加图表

@RequestMapping(value = "/charts", method = RequestMethod.POST)

public ApiResponse addChart(@RequestBody Chart chart) {

chartService.insert(chart);

List results = new ArrayList();

results.add(chart);

return success(1, results);

}

还有一个问题就是前端插入的时候不可能出现id,而Chart对象的属性包括id,name,type,src。

在建表的时候我创建了一个序列vis_chart_id用于id自增,写sql的插入图表的时候只需要写:

insert into vis_chart(id,name,type,src) values(vis_chart_id.nextval,:name,:type,:src)

然而这种方法时不可行的,在前端获取时一直会报错,id的位置为null,

想想也是,前端数据都没有作为一个完整的对象传入,肯定是不能成功的。

步骤如下:

1.首先在dao里面创建一个方法叫getSequence(),获取下一次sequence的值用作新插入的图表的id

@SqlQuery("select vis_chart_id.nextval from dual")

@Mapper(IntegerMapper.class)

Integer getSequence();

此时要注意将insert方法中的SQL语句改成

@SqlUpdate("insert into vis_chart(id,name,type,src) values(:id,:name,:type,:src)")

//插入chart

void insert(@BindBean Chart chart);

2.然后在service中将id赋给chart

public void insert( Chart chart){

ChartDao chartDao = dbi.onDemand(ChartDao.class);

Integer id = chartDao.getSequence();

chart.setId(id);

chartDao.insert(chart);

}

3.这样Controller调用insert方法的时候就会chart就会有id啦

//添加图表

@RequestMapping(value = "/charts", method = RequestMethod.POST)

public ApiResponse addChart(@RequestBody Chart chart) {

chartService.insert(chart);

List results = new ArrayList();

results.add(chart);

return success(1, results);

}

ajax传值controller怎么写,ajax向 controller传值(示例代码)相关推荐

  1. java文字手写识别_【手写文字识别】-JavaAPI示例代码

    手写文字识别-JavaAPI示例代码 不知不觉手写文字识别百度已经开始邀测了.需要的小伙伴去申请了哦.申请方式加入文字识别群找PM.或者工单提交申请.都要说明自己的APPID哦. 接口地址:https ...

  2. ajax传值controller怎么写,ajax如何传递参数给controller

    前台: 'type'        : 'post', 'contentType' : 'application/json;charset=UTF-8', 'data'        : JSON.s ...

  3. ajax注册判断怎么写,ajax之判断用户名是否被注册

    /** * * @author liang * 需求:模拟注册校验: * 1:jsp页面放置一个text文本框,当用户输入用户名,文本框失去焦点的时候,通过ajax访问服务器 * 2:servlet模 ...

  4. spring boot +ajax上传文件前后端分离完整实现示例代码

    1.案例场景 此处,我这里需要前端实现上传身份证OCR识别证件号码. 2.前端实现方式 2.1页面按钮 <div class="title-icon"></div ...

  5. ajax 同步异步true,async: false 实现AJAX同步请求 ( $.ajax同步/异步(async:false/true) )(示例代码)...

    虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...

  6. java ajax html复选框,HTMLjavaSkcriptCSSjQueryajax(九)(示例代码)

    一.HTML 1.单选按钮 Male  Female 2.复选框 I have a Car 3.下拉列表 VoloFita 如果设置某项选定直接 fem 4.设置文本域       创建按钮 5. R ...

  7. python命令行大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

  8. appsetting mysql_给IConfiguration写一个GetAppSetting扩展方法(示例代码)

    给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config ...

  9. python 代码命令大全-用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变. ...

最新文章

  1. 在2008 server上部署域
  2. Python itertools库详细教程
  3. mysql命令行卡在>>>>>
  4. 如何在站点静态文件下查找某关键字并修改文件名?
  5. 数组的合并和升序排列_leetcode No.31 下一个排列
  6. 学成在线--14.使用RabbitMQ完成页面发布
  7. Java 数组排序及元素查找
  8. Python小白的数学建模课-B2. 新冠疫情 SI模型
  9. C#LeetCode刷题之#383-赎金信(Ransom Note)
  10. 关于Linux目录及文档权限的研究
  11. C++ 多字节与宽字符串的相互转换
  12. 加权平均数的例子_加权平均值计算器
  13. windows下使用命令打开pdf文件
  14. 激光防护屏 激光防护屏
  15. HashMap源码解析JDK1.8 —————— 开开开山怪
  16. BAT 把持的小程序领地,现在入场的今日头条还有救吗?
  17. python中文件操作
  18. python的print输出为红色以及其他颜色的代码示例,Python print()输出文字带颜色设置方法
  19. 项目管理的整体进度的中间阶段
  20. 三维空间中圆的参数方程及matlab程序画图

热门文章

  1. 洛谷 P1757 通天之分组背包
  2. CentOS7 安装NodeJS
  3. jquery-基础事件[下]
  4. js中使用0 “” null undefined {}需要注意
  5. ZooKeeper安装,部署
  6. JAVA多线程,真的能提高效率吗
  7. js中变量作用域的小理解
  8. Freemarker宏和函数的用法和区别
  9. 详谈asp生成静态页方法
  10. mysql权限表_MySQL 数据库赋予用户权限操作表