Невозможно передать переменную в ajax url - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь передать идентификатор в мой контроллер с помощью ajax.

Я хочу использовать идентификатор var в URL-адресе ajax, но он не работает.

, где яУстанавливаю ID

<input type="checkbox" class="form-control traite" data-id="{{ $conversation->id }}"></td>

функция jquery

$(document).on('click', '.traite', function() {
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
var id = $(this).data('id');
$.ajax({
    url: "{{ route('traitements.change_traite_conversation', " + id + ") }}",
    type:"POST",
    dataType:"JSON",
    data: {
        "_token": "{{ csrf_token() }}",
        "id" : id
    },
    success: function() {
        console.log("Updated");
    },
    error: function(xhr) {
    console.log(xhr.responseText); // this line will save you tons of hours while debugging
    // do something here because of error
    }
});

console.log("Error");
});

web.php

Route::post('conversation/{id}/traiter', 'TraitementController@change_traite_conversation')->name('traitements.change_traite_conversation');

ошибка, которую я получаю

{
"message": "Undefined variable: id",
[...]
}

Я не понимаю, почему я не могу передать свой идентификатор в URL ajax, я обычно могу console.log его, и он работает!

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вы должны добавить fullurl attr в html, затем использовать javascript или jQuery.

В HTML file:

<input type="checkbox" class="form-control traite" data-id="{{ $conversation->id }}" data-fullurl="{{ route('traitements.change_traite_conversation', $conversation->id) }}"></td>

В Javascript / JQuery скрипт:

$(document).on('click', '.traite', function() {
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
var URL = $(this).data('fullurl');
var id = $(this).data('id');
$.ajax({
    url: URL,
    type:"POST",
    dataType:"JSON",
    data: {
        "_token": "{{ csrf_token() }}",
        "id" : id
    },
    success: function() {
        console.log("Updated");
    },
    error: function(xhr) {
    console.log(xhr.responseText); // this line will save you tons of hours while debugging
    // do something here because of error
    }
});

console.log("Error");
});
1 голос
/ 17 октября 2019

Html . передайте его в атрибуте данных вместо id вы можете передать url не так ли?

<input type="checkbox" class="form-control traite" data-url="{{ route('traitements.change_traite_conversation', $conversation->id) }}"></td>

Jquery , получите этот URL-адрес в jquery.

$(document).on('click', '.traite', function() {
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
var url = $(this).data('url');

$.ajax({
    url: url,

В противном случае вы можете напрямую передать переменную php, но в вашем случае вам нужна динамическая, поэтому я думаю, что она не будет работать.

$.ajax({
        url: "{{ route('traitements.change_traite_conversation', $conversation->id) }}",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...