Событие Firing Laravel 5.4 вызывает проблемы в localhost

Прежде всего Привет,
У меня есть своего рода проблема, с которой я не могу справиться.
я отправляю запрос ajax как следующее

  <script>$(document).ready(function(){$(document).on('keydown' , '.message_input', function(e){var token = $('input[name=_token]').val();
var msg  = $(this).val();
var element = $(this) ;
var ul = element.parent().parent().find('ul');
var authenticated_user_id = $(this).attr('data-auth-id');
var user_id = $(this).attr('data-to-user-id');
var conversation_id = $(this).attr('data-conversation-id');

if(!msg == '' && e.keyCode == 13  && !e.shiftKey){$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});$.ajax({url : "{{ url("$lang/post_message_test")}}" ,
method : 'POST',
cache: false,
dataType:'JSON',
data: {   msg:msg  , authenticated_user_id:authenticated_user_id  , user_id:user_id , conversation_id: conversation_id , _token:token   },

success:function(data){

// my logic
}
});return false ;}

});

});

</script>

это займет с контроллером чата и конкретной функции, называемой postMessage

имеет такую ​​структуру

public function postMessage(Request $request ){if($request->ajax()){/** data coming from our post request with an elegant way */
$authenticated_user_id = $request->get('authenticated_user_id');
$user_id = $request->get('user_id');
$conversation_id = $request->get('conversation_id');

$msg = $request->get('msg');// find user image
$user = User::find($authenticated_user_id) ;
$image = asset('uploads/users/').'/'.$user->profileImage ;$name = '' ;

if($user->userType == 'doctor'){

$name = $user->doctorName ;
}else{
$name = $user->headPersonName  ;
}
$message  = new Message ;

$message->sender_id = $authenticated_user_id ;
$message->receiver_id = $user_id ;
$message->conversation_id = $conversation_id ;
$message->message = $msg ;
$message->is_read = 'not_read'  ;

if($message->save()){

$msg=Message::where('id',$message->id)
->select('id','message','sender_id','receiver_id','created_at')
->with('sender')
->with('receiver')
->first();

$sender_name =  $msg->sender->name ;
$sender_image =  $msg->sender->profileImage ;

$dt = Carbon::now();

$message_date  = $dt->diffForHumans() ;

event(new MessageWasRecieved( $user_id , $message->message , $image  , $authenticated_user_id , $name ));

return Response::json([
'status'=>'success'   ,
'message'=>$msg->message ,
'user_id'=>$user_id ,
'auth_id'=>Auth::user()->id ,
'image'=>$sender_image ,
'name'=>$sender_name]);}else{

return Response::json([
'status'=>'error'   ,]);
}

}}

в той простой логике, когда он достигает функции события, он должен вызвать это событие, и в javascript я жду, чтобы прослушать это событие.

что действительно происходит, так это то, что после публикации на этом URL post_message_test
то, что происходит во вкладке сети вместо того, чтобы возвращать код состояния 200, дает мне статус 302 (см. изображение ниже)

введите описание изображения здесь

и назовите другой URL-адрес с именем кампании (этот URL-адрес также найден в моем проекте). я перепробовал все возможные предостережения, я ужасно проверил свой код и уверен, что все работает отлично

так, что вызывает это, и я надеюсь, что я мог описать мою проблему правильно
Спасибо

0

Решение

Код состояния 302 означает перенаправление! Существует более одного
объяснение этому, но часто это связано с маршрутом, защищенным
авторизация промежуточного программного обеспечения, пока пользователь не подключен!

Для связи с Laravel по запросу XHR лучший способ Для этого нужно использовать Laravel Passport ( ссылка здесь )! Я уже встречал такую ​​проблему! Эта проблема заключается в том, что Laravel, когда он получает запрос ajax, проверяет, есть ли в заголовках заголовок «Авторизация», иначе он перенаправляет пользователя, потому что для него у него нет токена доступа.

Как установить паспорт Laravel?

  • с запуском композитора:
    composer require laravel/passport
  • Затем запустите: php artisan migrate перенести паспортные таблицы

конфигурация

  • Перейдите в Config / auth.php и измените драйвер api на passpor

    'api' => [
    'driver' => 'passport',
    'provider' => 'users',
    ],
    
    • Наконец, добавьте признаки HasApiTokens в вашу модель пользователя и Passport :: routs (в вашем классе AuthServicePovider: метод boot ()
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]