lavarel框架学习之使用ajax提交表单方法详解

来源:互联网 发布:过期未注册域名查询 编辑:程序博客网 时间:2024/05/01 04:55

由于laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加。本文和大家分享的就是lavarel框架中使用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+'

'+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";

  }

 

来源:博客园

0 0