繁体   English   中英

如何将选定表行中的 ID 传递到我的 AJAX function 以获取数据

[英]How can I pass an ID from selected table row to my AJAX function that fetching data

抱歉打扰,我无法将 ID 传递给我的 AJAX function。

我想将所选表行的 ID 传递给我的 AJAX function 并将其用于我的 controller 中的查询

这是我的桌子

这是我的表格行的代码

<div class="container">

<h2 style="margin-top: 12px;" class="alert alert-success">Details</h2><br>
    <div class="row">
      <div class="col-12">
      <table class="table table-bordered" id="">
      <thead>
      <tr>
      <th>Id</th>
      <th>Name</th>
      <th>Email</th>
      <td colspan="2">Action</td>
      </tr>
      </thead>
      <tbody id="users-crud">
      @foreach($merchants as $merchant)
      <tr id="user_id_{{ $merchant->id }}">
      <td>{{ $merchant->id}}</td>
      <td>{{ $merchant->first_name }}</td>
      <td>{{ $merchant->email }}</td>
     <td><a id="getData" onClick="getData({{$merchant->id}})" class="btn btn-info">Show</a> 
     </td>
      </tr>
      @endforeach
      </tbody>
      </table>
      {{ $merchants->links() }}
      </div> 
    </div>
  </div>

单击显示 ID 后应将其传递给我的 AJAX function,这是脚本的代码

   <script type=text/javascript>
      $(document).ready(function() {
       });
    
       function getData(id){
      $('#myModal').modal('show');
          $.ajax({  //create an ajax request to display.php
          type: "GET",
       url: "getproducts/",
       // dataType: 'json',
        data: {id: id}, // This will be {id: "1234"}     
        success: function (data) {
       $("#id").html(data.id);
       $("#first_name").text(data.first_name);
       }
       });
    
      };
    
    </script>

ID 将用于我的 controller 中的查询,这是我的控制器代码,请注意我的 where 查询中的数字 1 是硬编码的,我想放置从所选表中获取的 ID

public function getproducts()
{
    $merchants  = DB::table('merchants')
    ->select('merchants.*', 'product.product_name as product_names')
    ->join('product','product.id','=','merchants.id')
    // THE NUMBER 1 IS HARD CODED
    ->where('merchants.id', 1)
    ->paginate(8);
    return response()->json($test, 200);
}

Laravel Controller 中的每个方法都可以将 arguments“注入”其中,包括Request $request变量。 namespace声明之后将其添加到 Controller 的顶部:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

然后修改你的方法:

public function getproducts(Request $request) {
   ...
}

然后,不是对值1进行硬编码,而是从$request object 中提取它:

->where('merchants.id', $request->input('id'))

完整的文档可以在这里看到:

https://laravel.com/docs/9.x/requests#accessing-the-request

你的代码对我来说似乎很好。 您面临的问题是什么? 但是您可以进一步改进代码。

<td><a id="getData" onClick="getData({{$merchant->id}})" class="btn btn-info">Show</a> 

相反,您可以使用全局 class。在 class 中使用相同的 HTML id 也不是好的做法。

<td><a class="merchant_info" data-id="{{$merchant->id}}" class="btn btn-info">Show</a> 

现在需要修改为jQuery代码

<script type=text/javascript>
  $(document).ready(function() {
    $('.merchant_info').click(function(e){
       e.preventDefault();
       var dataId = $(this).attr("data-id");

       // Now do the Ajax Call etc

    });
  });
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM