$.ajax()传递参数后台controller接收不到的问题 20C

我想通过Ajax传递一个Pojo给Controller,但是controller接收不到数据

    下面是Ajax代码片

 $.ajax({
        url: basePath + "update.action",
        method:"post",
        dataType:"json",
        contentType: "application/json",
        data:JSON.stringify({
            cookId: $("#edit_cook_id").val,
            cookName: $("#edit_cookName").val,
            cookFlavor: $("#edit_cookFlavor").val,
            cookRepertory: $("#edit_cookRepertory").val,
            cookPrice: $("#edit_cookPrice").val,
            cookType: $("#edit_cookType").val
        }),
        success: function (data) {
            if (data > "0") {
                alert("客户信息更新成功!");
            } else {
                alert("客户信息更新失败!");
            }
            window.location.reload();
        },
        error:function () {
            alert("客户信息更新失败! ");
        }
    });

接下来是Controller

@RequestMapping(value = {"update"} ,method = { RequestMethod.POST })
@ResponseBody
public Long update(@RequestBody CookBook cookBook) {

    System.out.println("==============================================");
    System.out.println(cookBook);

    Long aLong = restaurantService.updateCook(cookBook);
    return aLong;
}

这是打印语句

CookBook{cookId=0, cookName='null', cookFlavor='null', cookRepertory=0, cookPrice=0, cookType='null'}

异常是说
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE cook_id = 0' at line 4

找了一天问题了,苦恼

0

8个回答

这个是说你的sql(数据库)查询语句有语法问题,看你发的问题是和前段有关,应该是你没明白错误报告的含义吧。
你可以把'where cook_id = 0' _所在的那一句截图发上来,我给你看看语法错误,或者直接放到数据库里去执行以下试试

0
JonathanYan
JonathanYan 回复qq_28054787: 他不是说有语法错误么,这块你检查没,cookId类型对吗
9 个月之前 回复
qq_28054787
看你笑 直接放到数据库里去执行可以,我之前试过,这个where cook_id = 0是应为实体类里面cookId=0
9 个月之前 回复
  $.ajax({
        url: basePath + "update.action",
        method:"post",
        dataType:"json",
        data:{
           "cookId": $("#edit_cook_id").val,
           "cookName": $("#edit_cookName").val,
            "cookFlavor": $("#edit_cookFlavor").val,
            "cookRepertory": $("#edit_cookRepertory").val,
            "cookPrice": $("#edit_cookPrice").val,
            "cookType": $("#edit_cookType").val
        },
        success: function (data) {
            if (data > "0") {
                alert("客户信息更新成功!");
            } else {
                alert("客户信息更新失败!");
            }
            window.location.reload();
        },
        error:function () {
            alert("客户信息更新失败! ");
        }
    });

改成这样试试看。

0
Lei_Da_Gou
Lei_Da_Gou 回复qq_28054787: if (data > "0") 改成if (data > 0)
9 个月之前 回复
qq_28054787
看你笑 这样试了下浏览器报错了
9 个月之前 回复
Lei_Da_Gou
Lei_Da_Gou 并且将@RequestBody注解去掉。
9 个月之前 回复

不行啊,图片说明

0
qq_28054787
看你笑 回复Lei_Da_Gou: if(data > "0") 改成 if (data > 0) 没什么变化,但是 $("#edit_cook_id").val 所有的改成 $("#edit_cook_id").val() 改下就没有报错了
9 个月之前 回复
Lei_Da_Gou
Lei_Da_Gou 并且将@RequestBody注解去掉。if (data > "0") 也改成 if (data > 0)
9 个月之前 回复
Lei_Da_Gou
Lei_Da_Gou $("#edit_cook_id").val 所有的改成 $("#edit_cook_id").val()
9 个月之前 回复

根据你这个错误提示,问题可能不在你的ajax,程序都是从上往下执行的,你看看在你的ajax回调之前的执行的,或者直接看你的后台文件的第四行

0
qq_37524684
子幽 回复qq_28054787: 不太了解你这个语言,但既然能用String 接收,那何不就用String接收了,再转为Pojo呢
9 个月之前 回复
qq_28054787
看你笑 我这个函数里面只放了一个ajax,绑定在一个提交按钮上,然后问题是我要是吧controller层接收的参数全改成String就能接收到,换成Pojo类型的就不行
9 个月之前 回复
0

错误说的是你sql语法错误,老是关心前端的问题干嘛?

0
 data:JSON.stringify({
            cookId: $("#edit_cook_id").val,
            cookName: $("#edit_cookName").val,
            cookFlavor: $("#edit_cookFlavor").val,
            cookRepertory: $("#edit_cookRepertory").val,
            cookPrice: $("#edit_cookPrice").val,
            cookType: $("#edit_cookType").val
        }),

改成

data:{
            "cookId": $("#edit_cook_id").val(),
            "cookName": $("#edit_cookName").val(),
            "cookFlavor": $("#edit_cookFlavor").val(),
            "cookRepertory": $("#edit_cookRepertory").val(),
            "cookPrice": $("#edit_cookPrice").val(),
            "cookType": $("#edit_cookType").val()
        },

1、后台接口实际上没有接收到对象参数,有0的值是因为参数自己初始化了一个对象出来。
2、sql报错是因为你执行sql语句的值是初始化出来对象的值,所以根本问题还是在对象参数没有接收到值。
3、修改data传值拼接方式,val方法后面记得加(),能调试或者打印的话,最好把data里的值打印出来看下是不是都有值。

0

success里返回的data是long型,不能与"0"比较,应该是与0比较

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
springmvc接收ajax请求参数遇到的坑
ajax发送请求后台接收不到参数做项目的过程中,springmvc Controller接收前端ajax请求参数总是接收不到,为null值,具体代码如下: 前端ajax代码:$.ajax({ headers: { 'Content-type': 'application/json; charset=utf-8' }, url
Ajax:有关于ajax传值到后台controller,实现json的ajax传值
在我们做项目,写代码的过程中,无非就是增删改查,我们今天先来看看增加数据到数据库,和改动数据库的数据,用什么来实现好呢?当然用ajax的json传值,现在是最流行,也是最便捷的,下面让我小L带你们去看看。1.说到ajax的传值,那我们必须得看看后台的controller我这边后台是一个springboot的架构我这边为大家写了一个简单的案例,希望对大家有所帮助。先是一个我跳转到页面的一个方法@Re...
Js请求参数有较长参数导致后台controller无法接收参数
该问题是由于应用服务器Tomcat内部配置导致的;POST请求本身对于参数是没有限制的,因此修改Tomcat的配置即可。在Tomcat的server.xml中修改配置<Connector connectionTimeout="20000"  port="808" protocol="HTTP/1.1"  redirectPort="8443" URIEncoding="UTF-8"  max..
ajax的post请求后台request.getParameter()接收不到参数的问题
最近在做技术储备 ,写几个简单的demo。所以没用框架,用的servlet,结果在接收ajax传值的时候出了点小意外。传到后台的值总是null,前端确实传递了非null的值。 我前端这样用ajax传值。 jQuery.ajax({         type: “post”,  ...
利用Ajax调用controller方法并传递参数
一、背景 由于近期工作需要将人脸识别功能与选课系统结合,但是对前端知识了解的很少,只能边做边学了,因此在这边把遇到的一些坑说明一下,希望能帮助到像我一样的初学者二、具体内容 这里采用框架为MVC,如果想在页面中不通过提交表单方式与控制器交互的话,可以用ajax去调用控制器方法并传递参数以及处理返回的json数据,方法如下页面代码: $.ajax( { ...
SSM整合jsp使用Ajax时,success获取不到controller类的返回值
问题描述:我写的是使用ajax对数据的删除,数据可以正常删除但是Ajax的success却接收不到controller类删除方法的返回值。却一直执行Ajax的error。 下面是jsp页面的ajax的使用↓ 下面是controller类里面删除的方法↓ 不成功原因: 1、controller类里面的方法没有使用 @ResponseBody 注解 2、需要导入一下...
ajax传数组到后台,后台springmvc 接受数组参数
关于ajax传数组到后台,后台springmvc  接受数组参数  特意整理了一下】     var   ids= new Array();  var checkId = new Array();//定义一个数组用来接收参数         $("input:checked").each(function() {             checkId.push($(this).val())...
ajax传递数组后台接收不到
ajax传递数组时会进行序列化,必须加上traditional:true的标识才可以。
解决AJAX发送PUT和DELETE请求,后台无法接收到参数
1、配置请求拦截器,在web.xml加入如下代码<!--解决ajax无法进行PUT、DELETE请求无法传递参数--> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</fil
Jquery中使用ajax传json参数并从SpringBoot后台Controller返回消息
场景 前端通过ajax提交json格式的数据,后台接受到实现具体的业务后 返回给前端消息提示。 实现 html页面代码 &lt;button id="printBtn" class="btn btn-info " type="button"&gt;&lt;i class="fa fa-trash-o"&gt;&lt;/i&gt; 打印&lt;/button&gt; 调用js部分代码...
ajax传数组到后台,后台springmvc 接受数组参数
ajax传数组到后台,后台springmvc  接受数组参数   var   ids= new Array();   $("input[class='detailCheck']:checked").each(function(i,k){    var itemId=$(this).attr("itemId");    ids[i]=itemId;   });
ajax传参springmvc接收不到
$.ajax({ type:"POST", url:"code/captchaVerify", contentType: "application/json; charset=utf-8", data:{"kaptchaCode":kaptchaCode}, dataType: "json", success:function(data){
ajax向controller传值方式
http://blog.csdn.net/a355586533/article/details/51927045#comments 原博客地址 第一种传值: controller中是几个单独的基本类型参数 spring MVC-controller [java] view plain copy   @RequestMapping("upd
springMVC ajax 后台获取不到对象属性
最近遇到的一个问题记录下   项目从struts2 换成springMVC 是遇到的问题  var params = { 'id': 1, 'itemId': itemId, 'shopId': shopId, 'sourceId': sourceId, 'shopId': shopId, 'startTime': startTime,
springmvc无法接收ajax提交form表单的实体类信息
springmvc无法接收ajax提交form表单的实体类信息
解决.net mvc json传值到后台,里面的值包含html标签 后台接受不到值的问题
1:后台有一个检测功能 ,它会检测字符串中含不含危险字符 ,所谓危险字符 就是       2:要解决这个问题其实简单 要把检测关闭了就可以了,让它不去检测,关闭只需要两步       1):在Web.config里面去配置, -->httpRuntime   加上requestValidationMode="2.0"   如下:           
AngularJs中$http发送post请求,SpringMVC后台接收不到参数值的 后台注解解决解决办法
导致这个问题的原因:使用AngularJS的$http进行POST请求,默认的Content-type为application/json; charset=UTF-8为了让SpringMVC的Controller能够接收到数据,进行POST请求时的Content-type应修改为application/x-www-form-urlencoded; charset=UTF-8既默认情况下,jQuer...
springMvc中前台ajax传json数据后台controller接受对象为null
一般地,出现这种情况很大一部分原因是对ajax中的参数作用不熟悉或者对@RequestBody注解不熟悉。 在jquery的ajax中,如果没加contentType:"application/json",那么data就应该对应的是json对象,反之,如果加了contentType:"application/json",那么ajax发送的就必须是字符串。为什么呢?contentType参数指定的...
Controller如何接收ajax从前台传递过来的json格式的数组参数
在前台js中ajax方法中,data传递到后台的数据包含file=[{&quot;name&quot;:&quot;&quot;,&quot;path&quot;:&quot;&quot;,&quot;docbase&quot;:&quot;&quot;},...]类型的json格式的数组参数,那么在Controller中应该如何接收呢? Controller中参数:@RequestParam(value = &quot;files&quot;, required = false, defaultValu
Ajax传值SpringMVC获取为Null的问题
前台使用Ajax请求,后台使用SpringMVC接收请求参数,但是每次都为null,度娘找了半天,最后发现是自己太大意了~~~也是经验不够!【直接上代码】:前端Ajax请求代码: $.ajax({ type : "post", url : "<c:url value='/changeTaskStatus.do'/>", data : {
$.ajax 传到后台的参数获取不到
使用ajax传参数,发现后台获取不到数据value2={'key21':'value21','key22':'value22'}; post_data = {'key1':'value1','key2':value2}; $(&quot;#funDiv1&quot;).bind(&quot;click&quot;,function(){ $.ajax({ type : 'post', url : ...
解决ajax的delete、put方法接受不到参数的问题
用ajax发送delete、put请求,但是delete/put请求无法传参数怎么办呢? 通过修改配置文件来实现Put和Delete请求的参数传递  在web.xml中添加如下代码:         HttpMethodFilter         org.springframework.web.filter.HttpPutFormContent
SSM整合html使用Ajax时,success获取不到controller类的返回值的问题解决。
使用ajax对数据库的执行删除,数据可以正常删除,就是controller方法可以执行,但是Ajax的success却接收不到controller类删除方法的返回值。却一直执行Ajax的error。 我的ajax是这样写的: $.ajax({ type: 'post', async: false, ...
MVC3/4项目开发中遇到的ajax提交Json数据到后台Controller处理(接收参数:多重JSON)
注:(原文链接:http://www.cnblogs.com/aehyok/archive/2013/05/18/3085499.html)本文只做收藏,方便以后学习使用 我这边通过原文的理解做了部分修改,没有使用JsonNet.js这个文件对json数据进行序列化,而是直接使用jquery.js的JSON.stringify() 前言   jQuery提供的ajax方法能很方便的实现客户端
ajax传递给asp.net mvc 后台数组参数方式
在项目上用到了批量删除与批量更改状态,前台使用了EasyUI的DataGrid,用到了批量更改数据状态功能。 在前台可以获取每条数据的ID,但是如何通过数组方式传递给后台? 通过昨晚的各种方式的调试,终于得出了答案! 在此作为备忘。 目前有两种方式可行: 方式一 前台代码: [javascript] view plain copy
web前端——ajax提交后台controller实现前端后台交互(2) 传两个参数 ,后台controller接收处理
前台jsp:$.ajax({ function getPage(page,size) { var postData={ page:page, size:size } $.ajax({ type:'POST', url:'${pageContext.
web前端——ajax提交后台controller实现前端后台交互(1) 传单个参数
ajax传单个参数给controller(action)<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script> <script> function del(gid) { $.ajax({ type: "post", url: "/goods/del",
ajax 传值后台无法获取
今天 使用ajax+vue 做页面遇到很奇怪的问题,主要有如下的问题:1、controller层 在使用 在使用@RequestParam接收参数时@RequestMapping中的method必须是RequestMethod.GET。2、如果ajax中设置了 contentType: &quot;application/json; charset=utf-8&quot;,dataType: &quot;json&quot;,两个参数,...
通过ajax发送post请求向controller传递参数后,页面无法跳转问题
我的项目之前都是用location.href来向后台传递参数,因为最近在学习ajax,所以将传值方式改成了ajax发送post请求,于是问题便接踵而来,我发现在controller中通过返回ModelAndView对象竟然不能实现页面跳转了,刚开始百思不得其解,现在总算明白这到底是怎么一回事了,也想出了一种解决方法,特此记录下来,方便以后回看 不能跳转的原因: ajax实际上是通过XMLHtt...
关于form表单提交文件file后台controller中参数获取不到的解决办法
ssm 前台jsp的form表单里 &amp;lt;form class=&quot;avatar-form&quot; action=&quot;upload/uploadPhoto.do&quot; enctype=&quot;multipart/form-data&quot; method=&quot;post&quot;&amp;gt; ... &amp;lt;input type=&quot;file&quot; class=&quot;avatar-input&quot; id=&quo
ssm中controller接收ajax的数据
使用这个接收数据 @RequestBody Map&amp;lt;String,String&amp;gt; map  实例: @RequestMapping(value=&quot;/add&quot;,method=RequestMethod.POST) public void addClassify(@RequestBody Map&amp;lt;String,String&amp;gt; map){ System.out....
$.ajax跨域请求数据的解决方案
最近一直在搞公众号前台开发,遇到了ajax跨域请求的问题,像地区的省-市-县三级联动、汽车品牌-车系-车款的三级联动查询等都需要调用外部接口(其他工程项目的接口)完成。下面就分享一下个人解决跨域请求的方案,当然是在后台程序猿大哥的帮助下,我才弄明白了其中的渊源,赶紧记录下来慢慢积累,也希望对大家能有所帮助,还请积极提出意见或建议。 跨域请求需要借助后台代码接收callback回调函数,对json
Ajax向java后台中传值为数组时,后台接收不到(为null)的问题
项目中前端jsp页面中有复选框,需要使用到ajax把这些值传递到java后台的操作。因为还需要返回数据到前端页面,所以无法使用form表单提交。 (对了,我在一群里问了这个问题,然后两个热心群友应持有不同的意见而互相骂起来了,罪过罪过,所以我觉得还是很多必要把这个问题记下来的。。) 好了上代码-----------------------------------------------
postman post请求接收不到参数
具体表现为 1.请求 获取请求方式确实是post   但是$_POST为空 $_GET不为空 解决:(将请求参数放到body中)
关于laravel-admin 路由使用post时,ajax提交数据后台接受不到
content-Type定义的是发送至服务器的数据类型,data-Type定义的是服务器返回的数据类型。  如果不指定 ContentType,默认为text/html,表单数据默认为application/x-www-form-urlencoded。 需要注意的是:  如果使用的是get方式,那么以上三种都是可以的,因为get方式的参数是跟在url后边的,与Content-Type无关。  ...
ajax post提交多个参数后台controller @RequestParam方式接收
&amp;amp;amp;amp;amp;amp;amp;lt;script &amp;amp;amp;amp;amp;amp;amp;gt; function goRead( id, cartoonId){ alert(&amp;amp;amp;amp;amp;amp;quot;id=&amp;amp;amp;amp;amp;amp;quot;+id+&amp;amp;amp;amp;amp;amp;quot; cartoonId=&amp;amp;amp;amp;amp;a
springboot中前端ajax传值与后台的接收
  后台接收前端发来的数据,有几个注解可以用到。这里不讲其中缘由,直接上实例。只需注意传值方式,其他的根据自己的情况自定。 第一种方式,不使用任何注解。           前端     var data = &quot;username=&quot;+vm.username+&quot;&amp;amp;password=&quot;+vm.password+&quot;&amp;amp;captcha=&quot;+vm.captcha;             $...
ajax post参数后台Tomcat 7获取不到的问题
AJAX post传参后台获取不到查询参数。网上找了各种方法,包括设置content-type,又是把json转成json格式字符串,问题依然存在,但是把post改成get又可以获取到,百思不得其解。后来看tomcat7配置的时候,把maxPostSize=&quot;0&quot;的配置去掉的时候问题消失。根据以往的经验,maxPostSize=&quot;0&quot;不就是不限制post数据的大小的么,怎么还反倒限制了数据的大小了...
前端ajax接收不到后端传递的json数据
今天做项目遇到个奇葩问题,后端的数组在前段console.log()都可以打印出来,但是转为json后前段就收不到任何相应;后来查了好久,发现之前打印的数组中中文字符乱码,就想着可能是编码的问题,发现果然后端代码的编码是GBK格式,改为utf-8后,就OK了.这个坑真是坑,索性把phpstorm系统默认编码设置为utf-8....
ajax的post请求后台request.getParameter()接收不到参数问题
最近在做技术储备 ,写几个简单的demo。所以没用框架,用的servlet,结果在接收ajax传值的时候出了点小意外。传到后台的值总是null,前端确实传递了非null的值。 我前端这样用ajax传值。 jQuery.ajax({         type: "post",             contentType: "application/json;charset=UTF-8",
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题