Теперь, когда я получил свой вызов Ajax, чтобы опубликовать электронное письмо, я все еще пытаюсь его восстановить, проверить его и вставить в мою базу данных.Как получить данные из Ajax-вызова в Laravel?
Вот что я получил:
Контроллер
public function postSubscribe() {
if(Request::ajax()) {
$data = Input::all();
}
dd(json_decode($data));
// Validation
$validator = Validator::make(Input::only('subscribe_email'),
array(
'subscribe_email' => 'email|unique:subscribes,email',
)
);
if ($validator->fails()) {
return Redirect::to('/#footer')
->with('subscribe_error','This email is already subscribed to us.')
->withErrors($validator)->withInput();
}else{
$subscribe = new Subscribe;
$subscribe->email = Input::get('subscribe_email');
$subscribe->save();
return Redirect::to('/thank-you');
}
}
Маршрут
Route::post('/subscribe','[email protected]');
С этого пост запрос, я не где я могу см. мой dd(json_decode($data));
? Правильно ли я это делаю? Пожалуйста, поправьте меня.
Форма
{!! Form::open(array('url' => '/subscribe', 'class' => 'subscribe-form', 'role' =>'form')) !!}
<div class="form-group col-lg-7 col-md-8 col-sm-8 col-lg-offset-1">
<label class="sr-only" for="mce-EMAIL">Email address</label>
<input type="email" name="subscribe_email" class="form-control" id="mce-EMAIL" placeholder="Enter email" required>
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;"><input type="text" name="b_168a366a98d3248fbc35c0b67_73d49e0d23" value=""></div>
</div>
<div class="form-group col-lg-3 col-md-4 col-sm-4">
<button type="button" name="subscribe" class="btn btn-primary btn-block" id="subscribe">Subscribe</button>
</div>
{!! Form::close() !!}
Ajax
<script type="text/javascript">
$(document).ready(function(){
$('#subscribe').click(function(e){
e.preventDefault();
$.ajax({
url: '/subscribe',
type: "post",
data: {'subscribe_email':$('input[name=subscribe_email]').val(), '_token': $('input[name=_token]').val()},
dataType: 'JSON',
success: function (data) {
console.log(data);
} // this is good
});
});
});
</script>
Ваши данные успешно
Вопросы
Как отлаживать что-то подобное на моей в будущем? Каков наиболее практичный способ извлечения данных из вызова Ajax в PHP Laravel?
Вы разместил скриншот заголовков, перейдите на вкладку для respone или предварительного просмотра. Кроме того, вам не нужно расшифровывать $ data –
Вы правы! Я не должен расшифровывать его. Плюс после его изменения для кодирования, он работает и меняет вкладку на ответ, я вижу, что я отправляю сейчас. – ihue
Что касается того, как отлаживать что-то вроде этого, найдите IDE, которая позволит вам делать веб-запросы и проходить через ваш код по строкам. Это может сэкономить массу времени, когда вы застряли на чем-то. – user3158900