gpt4 book ai didi

php - 使用 jQuery AJAX 从 Laravel 5 中的联系表单发送电子邮件

转载 作者:行者123 更新时间:2023-12-01 05:24:34 25 4
gpt4 key购买 nike

我在 Laravel Blade 中有联系表:

<div id="contactform">
<meta name="_token" content="{{ csrf_token() }}" />
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
{{ Form::open(array('route' => 'contact_store', 'id' => 'contact', 'name' => 'contact')) }}
<input type="text" id="firstName" name="firstName" placeholder="{{ trans('index.first_name') }}" class="required" />
<input type="text" id="lastName" name="lastName" placeholder="{{ trans('index.last_name') }}" class="required" />
<input type="text" id="email" name="email" placeholder="{{ trans('index.email') }}" class="required email" />
<textarea id="message" name="message" cols="40" rows="5" placeholder="{{ trans('index.message') }}" class="required"></textarea>
<input id="submit" class="send_it" name="submit" type="submit" value="{{ trans('index.submit_button') }}" />
{{Form::close()}}
<div id="response"></div>
<div id="loading"><img src="images/loader.gif" alt="loader"></div>
</div>

我在routes.php中设置了我的路线:

Route::get('/', 'HomeController@index');
Route::post('/',
['as' => 'contact_store', 'uses' => 'HomeController@store']);

我有 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;
}

在我的 Controller 中我有:

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('mymail@gmail.com')->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'
];
}
}

我配置了 config/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('mymail@gmail.com'),
'password' => env('mypass'),
'sendmail' => '/usr/sbin/sendmail -bs',

我在 resources/views/email 中添加了名为 mail.blade.php 的 Blade 文件。我在 js 中使用 jquery 验证器设置的验证效果很好,但是当验证正常并且需要发送 ajax 时出现错误:抛出错误:SyntaxError:意外的标记 < 在 JSON 中的位置 0
jqXHR:[object Object]
textStatus:parsererror

我认为来自 Controller 的 json 传递得不好,但我不知道如何修复它。

最佳答案

问题出在 csrf token 未随表单发送。所以我添加了

var _token = $('[name="_token"]').val(),

并与其他表单数据一起发送,一切正常。

关于php - 使用 jQuery AJAX 从 Laravel 5 中的联系表单发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com