2017-08-12 6 views
0

フォームをLaravelプロジェクトで電子メールで送信しようとしています。しかし、私は500エラーを受け取り続ける。私はthisのチュートリアルに従っています。AJAX(Laravel 5.4)経由で電子メールを送信すると500エラーが発生する

これがルートである:

Route::post('contact', '[email protected]'); 

これはコントローラである:

public function contact(Request $request) { 

    $this->validate($request, [ 
     'email'=>'required|email', 
     'fullname'=>'max:50' 
     ]); 

    $data = array(
     'email' => $request->email, 
     'fullname' => $request->fullname, 
     ); 

    Mail::send('emails.contact', $data, function($message) use ($data){ 
     $message->from($data['email']); 
     $message->to('[email protected]'); 

    }); 
} 

これは、以前の質問によって示されるようにCSRFとHTMLフォームを含む図です。

<form onsubmit="return false" method="post" id="contact_form" name="contact-form"> 

    <input type="hidden" name="_token" value="{{ csrf_field() }}"> 
    <input type="text" class="form-control" name="fullname" id="fullname" required> 
    <input class="form-control" aria-describedby='sizing-addon1' placeholder="Email Address" required name="email" id="email"> 
    <button id="contact_btn" data-loading-text="Sending" >Send Your Message</button> 

</form> 

これは、AJAXコードです:クロームdevのツールで

$('#contact_form').submit(function(e) { 
       e.preventDefault(); 
      }).validate({ 

      rules: { 
      fullname: { 
       required: true, 

      }, 
      email: { 
       required: true, 
       email: true 
      }, 
     }, 
      submitHandler: function (form) { 

      var btn = $('#contact_btn'); 
      btn.button('loading'); 
      setTimeout(function() { 
       btn.button('reset'); 
      }, 8000); 

      $.ajax({ 
       type: 'POST', 
       url: "{{url('contact')}}", 

       dataType: 'json', 
       async: true, 
       data: { 

       fullname: $('#fullname').val(), 
       email: $('#email').val(), 

      }, 

       success: function (json) { 
       $('#contact').hide(); 
       $('#output').html(
        '<p>We have received your message!</p>' 
       ).show(); 
       } 
      }); 
       return false; 
     } 
    }); 

は、リソースの読み込みに失敗しました:サーバーは500 (内部サーバーエラー)の状態で応答し

+2

ログの最後のセクションは無用です。 '#1'はあなたが確認したいものです –

+1

httpサーバのエラーログを確認してください。 – Wolen

+1

'$ data ['subject']' __not__は存在します。 –

答えて

1

私は問題がこの行にあると思います:

<input type="hidden" name="_token" value="{{ csrf_field() }}"> 

最後の1は、CSRFの入力フィールドおよびトークンのみ最初のものを生成するので、あなたはcsrf_token()ないcsrf_field()を使用する必要があります。 Ajaxの機能を呼び出す前に

data: { 
... 
'_token':$('[name="_token"]').val(), 
... 
} 

やAJAXヘッダー内: はまた、あなたのデータでAJAXリクエストにトークンを追加

$.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('[name="_token"]').val() 
     } 
    }); 
関連する問題