2016-01-11 4 views
2

Хорошо, ребята, я в тупике на этом. Я представляю форму, используя jQuery/Ajax для моего контроллера Laravel 5 (Маршрутизация работает отлично, без проблем). Контроллер возвращает именно то, что я ожидаю, за исключением данных из формы.Контроллер Laravel 5 не получит данные из формы ajax

Вот несколько кодов.

Форма:

<form action="/candidateajax/add/" enctype="multipart/form-data" method="post" accept-charset="utf-8" name="candidate" id="addcand"> 
     <input type="hidden" id="token" name="_token" value="{{ csrf_token() }}"> 
     <div> 
     Name 
     {!! Form::text('first_name', null, array('placeholder'=>'First Name')) !!} 
     {!! Form::text('last_name', null, array('placeholder'=>'Last Name')) !!} 
     </div> 

     <div id="candimages"> 
     Image 
     {!! Form::file('image', null) !!} 
     </div> 

     <div> 
     Bio<br/> 
     {!! Form::textarea('bio', null, array('placeholder'=>'Bio Text')) !!} 
     </div> 

     <div> 
     Q&A<br/> 
     {!! Form::textarea('qa', null, array('placeholder'=>'Q&A Text')) !!} 
     </div> 

     <div> 
     Additional Info<br/> 
     {!! Form::textarea('html', null, array('placeholder'=>'Additional Info Text')) !!} 
     </div> 

     <div> 
     Party 
     {!! Form::select('party', $parties) !!} 
     </div> 

     <div> 
     <!--<button type="button" id="addcandbtn">Add Candidate</button>--> 
     <button type="submit" id="addcandbtn">Add Candidate</button> 
     </div> 
     </form> 

<div> 
    Party 
    {!! Form::select('party', $parties) !!} 
</div> 

<div> 
    <!--<button type="button" id="addcandbtn">Add Candidate</button>--> 
    <button type="submit" id="addcandbtn">Add Candidate</button> 
</div> 
</form> 

Javascript/JQuery:

$("#addcand").on('submit', function(e){ 

     var dataser = $("#addcand").serialize(); 
     console.log(dataser); // Proves that the serialized form has data 

     e.preventDefault(); 

     $.ajax({ 
     url: '/candidateajax/add/', 
      data: dataser, 
     type:'POST', 
      cache:false, 
      dataType: 'json', 
      enctype:'multipart/form-data', 
     success:function(response){ 
     console.log(response); 
     }, 
      error: function(jqXHR, textStatus, errorThrown){ 
       console.log(jqXHR.responseText); 
      } 
    }); 
    }); 

Laravel Контроллер:

public function createCandidateAjax(Request $request) 
{ 
    $input = Input::all(); 
    return response()->json($input); 
} 

Я три ed возвращал и vardumping как $ input, так и $ request. Они оба пустуют.

Любая помощь будет высоко оценена. Благодаря!!

+1

Произвольные ошибки? И какая именно версия Laravel ... 5.0, 5.1, 5.2? – camelCase

+0

Вы проверили свой файл маршрутов? проверьте, правильно ли отправлен запрос на контроллер, а также проверьте сообщение об ошибке, которое вы получаете. –

+0

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

ответ

0

Хорошо, спасибо за помощь, ребята. Я понял, что мой запрос ajax был получен как запрос GET, а не запрос POST, даже если для метода/типа Ajax был установлен POST, и для действия формы было установлено значение POST. Когда я удалял конечный параметр «/» из параметра URL, он отправлялся как POST просто отлично и работал, как ожидалось.

Heads up, по запросу ajax к Laravel 5.1, я не могу объяснить, почему Laravel 5.1 не любит конечную «/», но это не так.

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