ajax

这里我整理了线ajax的data的各种传值的设置,包括json对象,json字符串,还有fromdata。

    第一种——json对象:{‘shopName’:’店铺名称’,’shopAddr’:’店铺详细地址’}
    前台ajax的写法

$.ajax({
            url : '/o2o/shopadmin/insertShop',
            type : 'POST',                      
            data :{'shopName':'shopName','shopAddr':'shopAddr'},    //这里的data就是json对象                   
            dataType: "json",
            success : function(data) {
                    $.toast('进来了!');
                         }
        });

*当页面传的是json对象时,只要设置dataType: “json”就可以了,或者什么都不设置都行
//注意:这里不能加下面这行,否则数据会传不到后台
//contentType:’application/json;charset=UTF-8’*,

后台代码,这里我们打印接收的两个参数

    @RequestMapping(value="insertShop", method = RequestMethod.POST)
    @ResponseBody
    public void insertShop(HttpServletRequest request){
         System.out.println(request.getParameter(shopName));
         System.out.println(request.getParameter(shopAddr));
    }

    //或者
    @RequestMapping(value="insertShop", method = RequestMethod.POST)
    @ResponseBody
    public void insertShop(HttpServletRequest request,String shopName,String shopAddr){
         System.out.println(shopName);
         System.out.println(shopAddr);
    }

    第二种——json字符串:’{‘shopName’:’店铺名称’,’shopAddr’:’店铺详细地址’}’
    json对象:也可以通过JSON.stringify({‘shopName’:’店铺’,’shopAddr’:’shopAddr’})的方法将json对象转化为json字符串

    前台ajax的写法
    使用json时contentType:’application/json;charset=UTF-8’是关键,
    设置charset=UTF-8这样传过去的中文才可以正常的显示

  //使用json时contentType:'application/json;charset=UTF-8'是关键,
  //设置charset=UTF-8这样传过去的中文才可以正常的显示
    $.ajax({
            url : '/o2o/shopadmin/insertShop',
            type : 'POST',  
            traditional:true,//这使json格式的字符不会被转码
            data :JSON.stringify({'shopName':'店铺','shopAddr':'shopAddr'}),                      
            contentType:'application/json;charset=UTF-8',  //这里的这行是关键
            dataType: "json",
            success : function(data) {
                    $.toast('进来了!');
                    }
        });

后台代码,这里同样打印接收到的json字符串
传JSON字符串+@RequestBody接收 切记只有加了这个才能正常的接受json字符串

//传JSON字符串+@RequestBody接收 切记只有加了这个才能正常的接受json字符串
@RequestMapping(value="insertShop", method = RequestMethod.POST)
    @ResponseBody
    public void insertShop( @RequestBody String shopName,
    HttpServletRequest request){
         System.out.println(shopName);
    }

    第三种——formdata传值
    我们使用ajax时可能即有数据又有文件流,这个时候我们就可以使用fromdata来传值
    通过form表单的形式提交
    前端页面代码——这里from需要设置enctype=”multipart/form-data”

<form class="inpform" id="uploadForm" enctype="multipart/form-data">
                        <div class="f-inp">
                            <div><i>店铺名称:</i>
                                <input type="text"  name="shopName" id="shopName"  >
                            </div>
                            <div><i>店铺地址:</i>
                                <input type="text"  name="shopAddr"  id="shopAddr" >
                            </div>       
                           <h4>图片</h4>   
                      <input type="file" id="shopImg" name="shopImg" />
                        </div>

       <input  type="button" value="提交" id="submit">
       </form>

ajax写法
processData : false, //必须false才会避开jQuery对 formdata 的默认处理
contentType : false, //必须false才会自动加上正确的Content-Type

$('#submit').click(function(){
       //用form 表单直接 构造formData 对象; 就不需要下面的append 方法来为表单进行赋值了。
        var formData = new FormData($("#uploadForm")[0]);
     $.ajax({
         async: false,//要求同步 不是不需看你的需求
         url : '/o2o/shopadmin/insertShop',  
         type : 'POST',  
         data : formData,  
         processData : false,  //必须false才会避开jQuery对 formdata 的默认处理   
         contentType : false,  //必须false才会自动加上正确的Content-Type
         success : function(result) {  
                 $.toast('进来了!');
             }
         });
       });

后台代码

@RequestMapping(value="insertShop", method = RequestMethod.POST)
@ResponseBody
public void insertShop(@RequestParam(value = "shopImg", required = false)MultipartFile shopImg,
String shopName,String shopAddr,HttpServletRequest request){
         System.out.println(shopImg.getOriginalFilename());
         System.out.println(shopName);
         System.out.println(shopAddr);      
    }

或者通过jQuery的方式,不适用form表单,这样要什么传什么

 $('#submit').click(function(){
               var shop={};
               shop.shopName=$('#shopName').val();
               shop.shopAddr=$('#shopAddr').val();
               var formData=new FormData();
               formData.append('shopImg', shopImg);  
               formData.append('shopStr', JSON.stringify(shop));
         $.ajax({
         async: false,//要求同步 不是不需看你的需求
         url : '/o2o/shopadmin/insertShop',  
         type : 'POST',  
         data : formData,  
         processData : false,  //必须false才会避开jQuery对 formdata 的默认处理   
         contentType : false,  //必须false才会自动加上正确的Content-Type
         success : function(result) {  
                 $.toast('进来了!');
             }
         });
       });

 
后台代码

@RequestMapping(value="insertShop", method = RequestMethod.POST)
@ResponseBody
public void insertShop(@RequestParam(value = "shopImg", required = false)MultipartFile
shopImg,String shopStr,HttpServletRequest request){
         System.out.println(shopImg.getOriginalFilename());
         System.out.println(shopStr);
    }  
---------------------
作者:fan.f
来源:CSDN
原文:https://blog.csdn.net/qq_34888129/article/details/82696171
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-07-24 14:53  我是happy唐啊  阅读(140)  评论(0编辑  收藏  举报