За последние 24 часа нас посетили 8817 программистов и 473 робота. Сейчас ищут 213 программистов ...

Не работает скрипт обновления поста.

Тема в разделе "PHP для новичков", создана пользователем Anton999, 27 сен 2020.

  1. Anton999

    Anton999 Новичок

    С нами с:
    3 янв 2020
    Сообщения:
    16
    Симпатии:
    0
    У меня на ларке есть одна функция, которая обновляет пост. Решил написать для неё скрипт на аяксе, что бы страничка не перезагружалась. В итоге я добился своего, страничка не перезагружается, но в поля в которые данные прилетают из request'a, почему то прилетает null. Без скрипта функция работает, но со скриптом в дату почему то пустота попадает

    PHP:
    1. public function editPost(storeRequest $request, $id, $postId) {
    2.  
    3.         $user = User::find($id);
    4.  
    5.         if(!$user && $user != Auth::user()->id) {
    6.             return abort(404);
    7.         }
    8.  
    9.         $post = Profile::find($postId);
    10.  
    11.         if(!$post) {
    12.             return abort(404);
    13.         }
    14.  
    15.         $post->user_id = Auth::user()->id;
    16.         $post->title = $request->title;
    17.         $post->message = $request->message;
    18.         $post->videoPost = str_replace('watch?v=', 'embed/', $request->videoPost);
    19.  
    20.         if($request->file('img')) {
    21.             $path = Storage::putFile('public/' . Auth::user()->id . '/post', $request->file('img'));
    22.             $url = Storage::url($path);
    23.             $post->img = $url;
    24.         }
    25.  
    26.         $post->update();
    27.  
    28. //        return redirect()->back();
    29.         return $post;
    30.  
    31.     }

    Код (Javascript):
    1. $.ajaxSetup({
    2.         headers: {
    3.             'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    4.         }
    5.     });
    6.  
    7.     $('.infinite-scroll').on('click', '#editPostButton', function(e) {
    8.         e.preventDefault();
    9.  
    10.         var id = $(this).data('id');
    11.         var user_id = $('#userForm').val();
    12.         var form = document.getElementById('EditPostForm'+id);
    13.         var formData = new FormData(form);
    14.  
    15.         $.ajax({
    16.             url: "id"+user_id+"/"+id+"/edit",
    17.             type: "PATCH",
    18.             data: form,
    19.             success: function(data) {
    20.                 console.log(data);
    21.                 $("#textpostdata"+id).html($(data).find("#textpostdata"+id).html());
    22.                 $("#closeButton"+id).click();
    23.             },
    24.             error: function() {
    25.                 console.log('error');
    26.             },
    27.             contentType: false,
    28.             processData: false,
    29.         });
    30.  
    31.     });
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.410
    Симпатии:
    467
    Адрес:
    Татарстан
    Да потому что опять какую то хрень передаёте...
    Что вы передаёте в качестве данных??
    Посмотрите по f12. - удивитесь
     
  3. Anton999

    Anton999 Новичок

    С нами с:
    3 янв 2020
    Сообщения:
    16
    Симпатии:
    0
    В качестве данных передаю объект formData. В консоли null там, где данные прилетают из request'a
    Там в коде опечатка, вместо
    Код (Javascript):
    1. data: form, => data: formData,
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.410
    Симпатии:
    467
    Адрес:
    Татарстан
    Сплошные опечатки?
    Почему бы не передавать форму через serialize()

    Роутер именно на метод patch?
     
  5. Anton999

    Anton999 Новичок

    С нами с:
    3 янв 2020
    Сообщения:
    16
    Симпатии:
    0
    Да, метод patch
    У меня в форме изображения можно прикреплять, поэтому через formData делаю, да я и через serialize пробовал без файлов. Без разницы, я где то накосячил и у меня в дату вообще ничего не идет
     
  6. Anton999

    Anton999 Новичок

    С нами с:
    3 янв 2020
    Сообщения:
    16
    Симпатии:
    0
    Исправил, нужно было в аяксе в методе указать POST, а не PATCH
    [​IMG]