2
を使用してLaravel 5のコンタクトフォームからメールを送信しますそれは正しく動作します。検証が渡されると、データを送信するためにajaxを呼び出します。私が持っているは、私はLaravelブレードにコンタクトフォームを持っているjQueryのAJAXに
$('#submit').click(function(e) {
$.ajaxSetup({
header:$('meta[name="_token"]').attr('content')
})
e.preventDefault;
if($('#contact').valid()) {
ajaxSubmit();
}
else {
$('label.error').hide().fadeIn('slow');
}
});
});
function ajaxSubmit() {
$('#loading').show();
$('#submit').attr('disabled', 'disabled');
var firstName = $('#firstName').val();
var lastName = $('#lastName').val();
var email = $('#email').val();
var message = $('#message').val();
var data = 'firstName=' +firstName+ '&lastName=' +lastName+ '&email=' +email+ '&message=' +message;
$.ajax({
url: '/',
type: 'get',
dataType: 'json',
data: data,
cache: false,
success: function(response) {
$('#loading, #contact, .message').fadeOut('slow');
$('#response').html('<h3>'+Lang.get('index.email_sent')+'</h3>').fadeIn('slow');
},
error: function(jqXHR, textStatus, errorThrown) {
$('#loading').fadeOut('slow');
$('#submit').removeAttr('disabled');
$('#response').text('Error Thrown: ' +errorThrown+ '<br>jqXHR: ' +jqXHR+ '<br>textStatus: ' +textStatus).show();
}
});
return false;
}
そして、私のコントローラで:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App;
use App\Http\Requests;
use App\Http\Requests\ContactFormRequest;
use Mail;
class HomeController extends Controller
{
public function index()
{
return view('index');
}
public function store(ContactFormRequest $request)
{
Mail::send('email.mail',
[
'name' => $request->get('firstName'),
'email' => $request->get('email'),
'message' => $request->get('message')
], function($message)
{
$message->from($request->get('email'));
$message->to('[email protected]')->subject('Contact form');
});
$response = [
'status' => 'success',
'msg' => 'Mail sent successfully',
];
return response()->json([$response], 200);
}
}
そして、私のContactFormRequest.phpに私が持っている:
public function authorize()
{
return true;
}
public function rules()
{
return [
'firstName' => 'required',
'lastName' => 'required',
'email' => 'required|email',
'message' => 'required|min:10'
];
}
}
を私は設定/ mail.phpを設定した:
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 465),
'from' => ['address' => null, 'name' => null],
'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
'username' => env('[email protected]'),
'password' => env('mypass'),
'sendmail' => '/usr/sbin/sendmail -bs',
メールと呼ばれるブレードファイルを追加しました.blade.phpリソース/ビュー/電子メール。 jqueryバリデータでjsで設定したバリデーションはうまくいくが、バリデーションが正常で、ajaxを送信する必要があるときにエラーが発生する: エラースロー:SyntaxError:予期しないトークン<がJSON 0の位置にある
jqXHR: [オブジェクトオブジェクト]
textStatus:parsererror
コントローラーのjsonはうまくいっていないと思いますが、それを修正する方法がわかりません。
'return response() - > json($ response、200);はどうでしょうか? 'jqXHR'、' textStatus'、 'errorThrown'のそれぞれを' console.log() 'できて、結果を教えてください。 – Wistar
jqXHR - >オブジェクト{readyStateの:4、responseText: "<!DOCTYPE HTML>↵
↵