при отправке данных через Ajax контроллеру в Laravel данные равны нулю

#php #jquery #ajax #laravel

Вопрос:

Я использовал Ajax для отправки данных контроллеру, к сожалению, когда я получаю данные, они пусты, ничего не отправляется. хотя он дает мне данные, когда я получаю их через jQuery перед отправкой.

ниже приведен код Ajax ——————-

 $.ajax({  url: $('form#add-user-form').attr('action'),  method: $('form#add-user-form').attr('method'),  data: form.serializeArray(),  processData: false,  dataType: 'json',  contentType: false,  beforeSend:function(){  $(form).find('span.error-text').text('');  alert('working'   " "   user['fname']);  },  success:function(data){    if (data.code == 0 ){  $.each (data.error, function(prefix, value){  alert(prefix   ' '   value[0]);  $(form).find('span.' prefix '_error').text(value[0]);  });  alert('complete');  }else {    $(form)[0].reset();  alert(data.msg)  }   }   });  

——————Метод контроллера Laravel, который получает данные —————-

 public function store(Request $request) {    $validator = Validator::make($request -gt; all(), ['fname' =gt; 'required|min:5|max:25',   'lname' =gt; 'required|min:5|max:25',  'email' =gt; 'required|email|unique:users',   'pass' =gt; 'required|min:8|max:20|',   'confirm-pass' =gt; 'required|min:8|max:20'  ]);  if (!$validator -gt; passes() ){  return response()-gt;json(['code'=gt; 0, 'error'=gt; $validator-gt;errors()-gt;toArray(), $request-gt;fname]); }else {  $user = new users();  $user -gt; name = $request -gt; fname ;  $user -gt; email = $request -gt; email ;  $user -gt; password = $request -gt; pass;  $query = $user -gt; save();  if ( !$query ){  return response() -gt; json(['code'=gt; 0, 'msg' =gt; 'something went wrong']);  }else {  return response() -gt; json(['code' =gt; 1, 'msg' =gt; 'users has been successfully added']);  } }  }  

Комментарии:

1. Должно ли это быть: $(form).serializeArray() ?

2. Почему вы использовали processData: false, и contentType: false, ? Вы бы сделали это только в том случае, если отправляете составной FormData объект

3. Это не решило проблему, все то же самое.

Ответ №1:

Я нашел ответ, вместо того, чтобы использовать метод $.ajax, я заменил его функцией $.post jQuery, и все работает идеально.