AJAX данные не передаются на Laravel контроллер - Laravel 6 - PullRequest
0 голосов
/ 01 февраля 2020

Я установил две кнопки, которые при нажатии просто отправляют свои значения на мой контроллер, затем я пытаюсь отправить обратно AJAX HTML, чтобы отобразить профиль пользователя на главной странице. Я не могу получить ввод id, чтобы сделать это на контроллере, независимо от того, что я пытаюсь.

Вот HTML:

<ul class="signup-li">
    @foreach($participants as $participant)
        <button type="submit" name="id" value="{{$participant->id}}">
            {{$participant->phone}}
        </button>
    @endforeach
</ul>   

Вот мой JS:

$(document).ready(function(){
    $("button").click(function() {
        var id = $(this).val();
        console.log(id);

        $.ajax({
            type:'POST',
            url:'/get-profile/',
            headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
            data: { "id" : id },
            success: function(data){
                console.log('hi');
            },

            error: function(xhr,textStatus,thrownError) {
                alert(xhr + "\n" + textStatus + "\n" + thrownError);
            }
        });
    });
});

Вот моя функция контроллера:

public function getProfile(Request $request)
{
    $id = $request->input('id');
    Log::info($id);
    $participant = Participant::where('id','=',$id)->first();
    $returnHTML = view('ajax.user-profile')->with('participant', $participant)->renderSections()['content'];

    return response()->json(array('success' => true, 'html'=>$returnHTML));
}

Что я делаю не так? Я пытаюсь зарегистрировать запрос и ничего не приходит. У меня отключен CSRF для этого маршрута. Проблема в том, что участник не найден, потому что идентификатор не попадает в контроллер. Почему он не делает это?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

В вашем ajax

ADD dataType: 'json' url:'/get-profile',

$(document).ready(function(){
  $("button").click(function() {
    var id = $(this).val();
      $.ajax({
            type:'POST',
            dataType: 'json'
            url:'/get-profile',
            headers: {
                    'X-CSRF-TOKEN': '{{ csrf_token() }}'
                  },           
            data: { "id" : id },
            success: function(data){
            console.log('hi');

            },

            error: function(xhr,textStatus,thrownError) {
            alert(xhr + "\n" + textStatus + "\n" + thrownError);
            }

    });
        });
    });


</script>
0 голосов
/ 01 февраля 2020

Вы можете добавить dataType: 'json' к вашему $.ajax({...}) вызову

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...