lavarel框架中如何使用ajax提交表单

时间:2023-03-08 19:22:35
lavarel框架中如何使用ajax提交表单

  开门见山,因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加

在网上看了很多的解决方式,我是用下面这种方法解决的:

1,首先在模板里面加上一个meta  :

<meta name="_token" content="{{ csrf_token() }}"/> 

2,然后在ajax方法里面加

headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
},

这是ajax的方法,发现了很好用的jquery的函数,$().serialize()和$().serializeArray(),代码中我用的是后者,可以获取form表单中的数据,并且能直接通过ajax传输,简直太神奇了!!!(孤陋寡闻让大家见笑了)

$(form[1]).submit(function(event){
        var data = $(form[1]).serializeArray();
        // console.log(data);
        $.ajax({
            type:'post',
            url:'/basic',
            data:data,
            headers: {
    'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
},
            success:function(msg){
                if (msg) {
                    $('.basicEdit').hide();
                    $('.basicShow').show();
                    $('.basicShow span').html(data[1].value+' | '+data[2].value+' | '+data[3].value+' | '+data[4].value+'<br>'+data[5].value+' | '+data[6].value+' | '+data[7].value);
                }
            },
        });
        // event.preventDefault();

        return false;
   });

3然后在控制器方法中获取数据了,直接$req->你的表单name就行了.

public function basic(Request $req){
      // return $req->gender;
      $uid = Auth::user()->uid;
      // return $uid;
      // $inf = new \App\Info;
      $inf = Info::where('uid',$uid)->first();
      // return $inf;
      $inf->name = $req->name;
      $inf->gender = $req->gender;
      $inf->topDegre = $req->topDegre;
      $inf->workyear = $req->workyear;
      $inf->tel = $req->tel;
      $inf->email = $req->email;
      return $inf->save()?"ok":"fail";
    }

总结下:

我觉得我说的每一步都是必须得!!!,我的回调函数里面写的代码是把表单里面获得数据重新打印出来了,不需要的可以忽视掉,然后代码将就看吧,一个php初学者奉上.over