新手求助,formData传到后台的值取出为null

qq_41936106 2018-09-27 02:14:35
新人小白,这段时间自己学习慕课网的教程,然后遇见问题,js层ajax通过formData传值给后台,后台通过request.getParameter接收的话,值一直为null

这是js层代码

$("#submit").click(function(){
var shop = {};
if(isEdit){
shop.shopId = shopId;
}
shop.shopName = $("#shop-name").val();
shop.shopAddr = $("#shop-addr").val();
shop.phone = $("#shop-phone").val();
shop.shopDesc = $("#shop-desc").val();

shop.shopCategory = {
shopCategoryId:$("#shop-category").find("option").not(function(){
return !this.selected;
}).data("id")
};
shop.area = {
areaId:$("#area").find("option").not(function(){
return !this.selected;
}).data("id")
};
var shopImg = $("#shopImg")[0].files[0];
var formData = new FormData();
formData.append("shopImg",shopImg);
formData.append("shopStr",JSON.stringify(shop));
var verifyCodeActual = $("#j_captcha").val();
alert("verifyCodeActual:"+verifyCodeActual);
if(!verifyCodeActual){
$.toast("请输入验证码!");
return;
}
formData.append("verifyCodeActual",verifyCodeActual);
$.ajax({
url:(isEdit?editShopUrl:registerShopUrl),
tpye:"GET",
data:{
"verifyCodeActual":verifyCodeActual
},
contentType:false,
processData:false,
cache:false,
success:function(data){
if(data.success){
$.toast("提交成功!");
}else{
$.toast("提交失败!" + data.errMsg);
}
$("#captcha_img").click();
}
});
});

这是Controller层的代码

//修改店铺信息
@RequestMapping(value="/modifyshop",method=RequestMethod.GET)
@ResponseBody
public Map<String ,Object> modifyShop(HttpServletRequest request) {
Map<String ,Object> modelMap = new HashMap<String ,Object>();

System.out.println("shopImg11:"+request.getParameter("shopImg"));

//验证码验证
if(!CodeUtil.checkVerifyCode(request)){
modelMap.put("success", false);
modelMap.put("errMsg", "验证码输入错误!");
return modelMap;
}else{
modelMap.put("success", true);
}
//1.接收并转换相应的参数,包括店铺信息以及图片信息
String shopStr = HttpServletRequestUtil.getString(request, "shopStr");
ObjectMapper mapper = new ObjectMapper();
Shop shop = null;
try {
shop = mapper.readValue(shopStr, Shop.class);
} catch (Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
return modelMap;
}
CommonsMultipartFile shopImg = null;
CommonsMultipartResolver commonsMultipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
if(commonsMultipartResolver.isMultipart(request)){
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg");
}
//2.修改店铺信息
if(shop != null && shop.getShopId() != null){
PersonInfo owner = (PersonInfo)request.getSession().getAttribute("user");
shop.setOwner(owner);
ShopExecution se;
try {
if(shopImg == null){
se = shopService.modifyShop(shop, null, null);
}else{
se = shopService.modifyShop(shop, shopImg.getInputStream(),shopImg.getOriginalFilename());
}
if(se.getState() == ShopStateEnum.SUCCESS.getState()){
modelMap.put("success", true);
}else{
modelMap.put("success", false);
modelMap.put("errMsg", se.getStateInfo());
}
} catch (Exception e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
}
return modelMap;
}else{
modelMap.put("success", false);
modelMap.put("errMsg", "请输入店铺ID");
return modelMap;
}
}


这是CodeUtil工具包代码

package com.imooc.o2o.util;

import javax.servlet.http.HttpServletRequest;


public class CodeUtil {
/**
* 后台获取验证码的信息和前台的验证码对比
* @param request
* @return
*/
public static boolean checkVerifyCode(HttpServletRequest request) {
String verifyCodeExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String verifyCodeActual = HttpServletRequestUtil.getString(request,"verifyCodeActual");
System.out.println("verifyCodeActual:"+verifyCodeActual);
System.out.println("verifyCodeExpected:"+verifyCodeExpected);
if (verifyCodeActual == null || !verifyCodeActual.equalsIgnoreCase(verifyCodeExpected)) {
return false;
}
return true;
}
}



这是HttpServletRequestUtil工具包代码

public static String getString(HttpServletRequest request, String name) {
try {
String result = request.getParameter(name);
System.out.println("verifyCodeActual:"+request.getParameter("verifyCodeActual"));
System.out.println("shopStr:"+request.getParameter("shopStr"));
System.out.println("shopImg:"+request.getParameter("shopImg"));
System.out.println("result:"+result);
if (result != null) {
result = result.trim();
}
if ("".equals(result))
result = null;
return result;
} catch (Exception e) {
return null;
}

}


后台获取的参数一直为空,求各位大神帮帮忙
...全文
2652 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
风吹丶麦浪J 2019-05-28
  • 打赏
  • 举报
回复
$.ajax({ url:(isEdit?editShopUrl:registerShopUrl)+"?verifyCodeActual="+verifyCodeActual,(GET请求的参数都需要拼接) tpye:"GET", contentType:false, processData:false, cache:false, success:function(data){ if(data.success){ $.toast("提交成功!"); }else{ $.toast("提交失败!" + data.errMsg); } $("#captcha_img").click(); } });
jokerls 2019-05-27
  • 打赏
  • 举报
回复
就是这种js,各ide都没有对应的报错怎么解决哦
smile*_* 2019-05-27
  • 打赏
  • 举报
回复
可以把解决的代码发一下吗?谢谢
  • 打赏
  • 举报
回复
这个问题我已经解决了,你可以把它转化为json,然后去点双引号就行,
进击丶Saber 2018-12-17
  • 打赏
  • 举报
回复
post请求
a_b_a_b_a_b_a_b 2018-12-15
  • 打赏
  • 举报
回复
见解同6楼,传参到后台不是formData的数据啊
丨小莫 2018-09-29
  • 打赏
  • 举报
回复
楼上都说完了,我凑个数
夜雨恋星辰 2018-09-28
  • 打赏
  • 举报
回复
对啊,你ajax传的是
data:{
"verifyCodeActual":verifyCodeActual
}
并没有传formData过去
evanweng 2018-09-28
  • 打赏
  • 举报
回复
。。。你压根就没传
讨厌走开啦 2018-09-27
  • 打赏
  • 举报
回复
post到后台的是verifyCodeActual,而不是formData,检查下传递的数据是否正确。
前方太黑暗 2018-09-27
  • 打赏
  • 举报
回复
这个formData 发送到后台了吗
qq_41936106 2018-09-27
  • 打赏
  • 举报
回复
引用 1 楼 sinat_37774909 的回复:
js代码发ajax的时候,写错了
感谢感谢,这段时间敲代码一直手残打错,但是我改正过来了,后台那边接收的参数值还是null
竹子_bamboo 2018-09-27
  • 打赏
  • 举报
回复
js代码发ajax的时候,写错了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧