2017-08-12 60 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代碼:

$('#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; 
     } 
    }); 
在Chrome瀏覽器開發工具

無法加載資源:服務器與500 (內部服務器錯誤)的狀態迴應

+2

日誌的最後一節是沒用的。 '#1'是你想要檢查的 –

+1

檢查你的http服務器錯誤日誌。 – Wolen

+1

'$ data ['subject']'__not__ exists。 –

回答

1

我認爲問題出現在這一行:

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

您應該使用csrf_token()csrf_field()因爲最後一個產生的CSRF輸入字段,第一個只是象徵性。 同時添加令牌Ajax請求在您的數據:

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

或AJAX調用頭AJAX功能之前:

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