AJAX отправляет данные на контроллер laravel, и он не работает

#ajax #laravel

#ajax #laravel

Вопрос:

Я пытаюсь отправить user slug на мой контроллер laravel, и он не работает, вот мой html-код :

 <a class="card" onclick="chat_send($data = '{{$user->slug}}');">
 

вот мой скрипт :

 function chat_send(){
    var data = $data;
    var action_url = '{{ route('chat.show','data')}}';
                            
     $.ajax({
          type : "POST",
          url : action_url,
          data : {data:data},
          dataType : "json",
          success:function(data){
              if(data.errors){
                  alert('Message Field is Empty.');

          }
          if(data.success){
            alert('Success');

          }
       }
    });
 };
 

код контроллера :

 public function show(Request $request)
    {
        $slug = $request->get('data');
        

        return view('chat',compact('slug'));
        // return view('test');

    }
 

это ошибка, которую я получил :
Журнал консоли

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

1. Добро пожаловать в SO… вы знаете JavaScript?

2. данные должны передаваться следующим образом в ajax data: {data:data} и в контроллере Laravel catch как post

3. нет, я не знаю JS, я только начал учиться

4. я отредактировал данные в {data:data}, которые все еще не работают

Ответ №1:

Просто сделайте, и эта ошибка будет устранена.

 <a class="card" onclick="chat_send('{{$user->slug}}');">
 

И в скрипте:

 function chat_send(data){                          
      var action_url = '{{ route('chat.show','data')}}';                            
      $.ajax({
           type : "POST",
           url : action_url,
           data : {data:data},
           dataType : "json",
           success:function(data){
                if(data.errors){
                   alert('Message Field is Empty.');

                }
                if(data.success){
                    alert('Success');


                }
          }
     });
 };
 

Ответ №2:

попробуйте, как показано ниже:

 <a class="card" id="card" data = '{{$user->slug}}'>
 

Используйте jQuery для отправки ajax:

 $(document).ready(function(){
      $('#card').click(function(){
          var data = $(this).attr(data)
          var action_url = '{{ route('chat.show','data')}}';
                        
          $.ajax({
               type : "POST",
               url : action_url,
               data : {data:data},
               dataType : "json",
               success:function(data){
                  if(data.errors){
                     alert('Message Field is Empty.');

                  }
                  if(data.success){
                       alert('Success');

                   }
                }
           });
        };
      })
      
})