2015-05-07 2 views
0

Теперь, когда я получил свой вызов 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> 

Ваши данные успешно

enter image description here


Вопросы

Как отлаживать что-то подобное на моей в будущем? Каков наиболее практичный способ извлечения данных из вызова Ajax в PHP Laravel?

+1

Вы разместил скриншот заголовков, перейдите на вкладку для respone или предварительного просмотра. Кроме того, вам не нужно расшифровывать $ data –

+0

Вы правы! Я не должен расшифровывать его. Плюс после его изменения для кодирования, он работает и меняет вкладку на ответ, я вижу, что я отправляю сейчас. – ihue

+0

Что касается того, как отлаживать что-то вроде этого, найдите IDE, которая позволит вам делать веб-запросы и проходить через ваш код по строкам. Это может сэкономить массу времени, когда вы застряли на чем-то. – user3158900

ответ

0

благодаря @Pawel Bieszczad

изменение: dd(json_decode($data));

к: dd(json_encode($data));


и открыть консоль>Network Tab>Response

Теперь я вижу свой ответ, как ожидалось.

"{"subscribe_email":"[email protected]","_token":"S3lWmNn6gkkHrYY6nPmupCtrlRqWF6au7b0Mywy7"}"

+0

нет удобный способ. Наличие одной функции для сброса всего было бы более полезно при настройке шаблона в реальном времени – Tebe

Смежные вопросы