글 형태로 데이터를 제출할 때 laravel에서는 크로스 사이트 공격을 방지하기 위해 {{csrf_field()}}를 추가해야 하기 때문에 이 글을 통해 lavarel 프레임워크에서 ajax를 사용하여 양식을 제출하는 방법을 공유해 보겠습니다. 함께 살펴보세요
laravel 소개:
Laravel은 간단하고 우아한 PHP 웹 개발 프레임워크(PHP 웹 프레임워크)입니다. 누들과 같은 지저분한 코드에서 벗어날 수 있으며 완벽한 네트워크 앱을 구축하는 데 도움이 될 수 있으며 모든 코드 줄은 간결하고 표현력이 뛰어납니다. "개발"은 지루한 "베이스 코드"가 아닌 창의적인 정신 작업이어야 합니다.
바로 본론으로 들어가겠습니다. Laravel은 Cross-Site Attack을 방지하기 위해 Post Form으로 데이터를 제출할 때 {{csrf_field()}}
를 추가해야 하므로 Ajax를 사용하여 Form을 제출할 때 추가하는 것이 당연합니다.
인터넷에서 많은 솔루션을 읽었습니다.
1. 먼저 템플릿에 메타를 추가합니다.
<meta name="_token" content="{{ csrf_token() }}"/>
2. 그런 다음 ajax 메서드에
를 추가합니다.headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
이것은 매우 유용한 jquery 함수인 $().serialize() 및 $().serializeArray()를 발견한 것입니다. 양식의 데이터를 가져오기 위해 코드에서 후자를 사용합니다. 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->
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"; }
값에 html 태그가 포함된 Ajax 제출 매개변수를 성공적으로 제출할 수 없습니다.
Ajax가 새 창을 열고 브라우저에 의해 차단됩니다. . 솔루션
위 내용은 Lavarel Framework_AJAX 관련에서 ajax를 사용하여 양식을 제출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!