【问题标题】:How to get value of Laravel URL parameter even without embed it in Ajax即使没有将其嵌入 Ajax,如何获取 Laravel URL 参数的值
【发布时间】:2019-01-22 03:46:44
【问题描述】:

我正在使用 Laravel 5.6、PHP 7.1、XAMPP。我的 URL 包含来自一个控制器的值并在之前定义。 我的问题是,如何在不传递值的情况下获取 laravel URL 中的最后一个值。我下面的代码也将显示问题。

这是我的 Ajax:

$(document).ready(function() { 
    $('#student_table').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": "{{ route('leads.getdata') }}",
        "columns":[
            { "data": "group_id" },
            { "data": "customer_id" },
            { "data": "customer_id" },
            { "data": "action", orderable:false, searchable: false},
            { "data":"checkbox", orderable:false, searchable:false}
        ]
    });

我的路线:

Route::get('leads/getdata', 'Controller@getdata')->name('leads.getdata');

控制器.php

function getdata(Request $request)
{
    //$id = $request->input('id');
    $students = GroupCustomer::select('id', 'name', 'address')->where('user_id', '=', $id);
    return Datatables::of($students)
        ->addColumn('action', function($student){
            return '<a href="/customers/'.$student->id.'" class="btn btn-xs btn-primary eye" id="'.$student->id.'"><i class="glyphicon glyphicon-eye-open"></i></a><a href="#" class="btn btn-xs btn-danger delete" id="'.$student->id.'"><i class="glyphicon glyphicon-remove"></i></a>';
        })
        ->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
        ->rawColumns(['checkbox','action'])
        ->make(true);
}

当前 URL 是:http://localhost:8000/leads/6,因为我需要获取 '6' 值并将其传递给查询以获取该用户的姓名、地址。目前,它在没有“where”声明的情况下工作。但是,我只想显示 user_id = '6' 的名称和地址。

有没有办法在不改变 Ajax 和路由的任何内容的情况下获得这个“6”值?

【问题讨论】:

  • 我不明白你的问题,但我想你问的是route parameters?您也可以使用route model binding,因此您将获得整个GroupCustomer 模型,而无需在控制器中进行任何查询。检查那些文档,它们有帮助吗?如果不是,请尝试澄清您的问题,我不确定您在问什么。
  • 是的,完全正确。我尝试在路由中绑定数据以将它们传递到下一页,但它一直显示错误,您可以告诉我如何在此 Ajax 脚本中绑定数据。

标签: php ajax laravel laravel-5


【解决方案1】:

更改路线到:

Route::get('leads/{id}', 'Controller@getdata')->name('leads.getdata');

将控制器更改为:

function getdata(Request $request, $id) {
    //$id = $request->input('id');

    $students = GroupCustomer::select('id', 'name', 'address')->where('user_id', '=', $id)->get();
    return Datatables::of($students)
        ->addColumn('action', function($student){
            return '<a href="/customers/'.$student->id.'" class="btn btn-xs btn-primary eye" id="'.$student->id.'"><i class="glyphicon glyphicon-eye-open"></i></a><a href="#" class="btn btn-xs btn-danger delete" id="'.$student->id.'"><i class="glyphicon glyphicon-remove"></i></a>';
        })
        ->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
        ->rawColumns(['checkbox','action'])
        ->make(true);
}

我认为不接触 ajax 或路由是不可能实现你想要的。

【讨论】:

  • 我得到了这一行:{"draw":0,"recordsTotal":0,"recordsFiltered":0,"data":[],"queries":[{"query":" select count(*) as aggregate from (select '1' as row_count from group_customers where customer_id = ?) count_row_table","bindings":["1"],"time":0.48},{"查询“:”选择idnameaddress from group_customers where user_id = ?","bindings":["6"],"time":0.32}],"input": []} 如您所见,“where”条件为空。如何获取“bindings”的值并将其传递给$id:[“6”],以便我可以将其用作变量并稍后将其分配给'where'语句
  • 我更新了代码。你必须添加 ->get() 喜欢: $students = GroupCustomer::select('id', 'name', 'address')->where('user_id', '=', $id)->get( );你也可以缩短使用它的时间: $students = GroupCustomer::where('user_id', $id)->get(['id', 'name', 'address']);
【解决方案2】:

问题是通过绑定数据解决的,其实问题出在绑定数据上。多姆。效果不好,所以一旦我解决了绑定它的问题。

这是我修复 DOM 问题后的 Ajax 代码:

 var id = document.getElementById("customer_id").value;

                       $('#student_table').DataTable({

                           "processing": true,
                           "serverSide": true,
                           ajax: {
                               url: "{!! route('leads.getdata') !!}",
                               type: "GET",
                               data: {id, id},
                               dataType: "JSON"
                           },
                           "columns":[
                               { "data": "group_id" },
                               { "data": "customer_id" },
                               { "data": "customer_id" },
                               { "data": "action", orderable:false, searchable: false},
                               { "data":"checkbox", orderable:false, searchable:false}
                           ]
                       });

谢谢

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2015-10-08
    • 2020-05-02
    • 2017-09-03
    • 2017-08-22
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多