无法将变量传递给Ajax网址

时间:2019-10-17 12:12:32

标签: javascript php ajax laravel

我正在尝试使用ajax将ID传递给我的控制器。

我想在ajax URL中使用id var,但是它不起作用。

我要在其中设置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",
[...]
}

我不明白为什么我无法将我的ID传递到ajax URL,我通常可以console.log它并且可以正常工作!

2 个答案:

答案 0 :(得分:1)

HTML 。将其传递给data属性而不是id,您可以传递url吗?

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

jQuery ,在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) }}",

答案 1 :(得分:1)

您应该在HTML中添加fullurl attr,然后使用javascriptjQuery

HTML 文件中:

<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");
});