【问题标题】:How to write route name with parameter in laravel controller with ajax如何使用 ajax 在 laravel 控制器中编写带参数的路由名称
【发布时间】:2020-08-24 23:26:28
【问题描述】:

我在我的 table td 中使用 laravel 和 ajax 进行了实时搜索,当我尝试在控制器中使用 onClick="location.href=''" 中的参数传递命名路由时,它不起作用。但是没有参数的命名路由没有问题。我该如何解决这个问题?

我的控制器:

   function action(Request $request)
    {
        if($request->ajax())
        {
         $output = '';
         if($query != '')
         {
          $data = DB::table('banners')
            ->where('id', 'like', '%'.$query.'%')
            ->orWhere('Caption_Heading', 'like', '%'.$query.'%')
            ->orWhere('Caption_Description', 'like', '%'.$query.'%')
            ->orderBy('id', 'desc')
            ->get();
            
         }
         else
         {
          $data = DB::table('banners')
            ->orderBy('id', 'desc')
            ->get();
         }
         $total_row = $data->count();

         if($total_row > 0)
         {
          foreach($data as $row)
          {
            $route = route('banners.edit',$banner);
           $output .= '

           <tr>
           <th scope="row"><input type="checkbox" name="ids[]" class="selectbox" value="'.$row->id.'" onchange="change()"></th>
            <td onClick="location.href='.$route.'" style="cursor: pointer">'.$row->id.'</td>
            <td style="cursor: pointer"><img src="/storage/'.$row->Banner_Image.'"  alt="'.$row->Caption_Heading.'" class="img-thumbnail" width="70px" height="100px"></td>
            <td style="cursor: pointer">'.$row->Caption_Description.'</td>
            <td style="cursor: pointer">'.$row->Caption_Description.'</td>
           </tr>
           ';
          }
         }
         else
         {
          $output = '
          <tr>
           <td align="center" colspan="5">No Data Found</td>
          </tr>
          ';
         }
         $data = array(
          'table_data'  => $output,
          'total_data'  => $total_row
         );
   
         echo json_encode($data);
        }
    }

我的 web.php:

        Route::prefix('banners')->group(function() {
            Route::get('/', 'AdminVisible\BannerController@index')->name('banner');
            Route::get('/action', 'AdminVisible\BannerController@action')->name('banner.action');
            Route::get('/create', 'AdminVisible\BannerController@create')->name('banners.create');
            Route::post('/create', 'AdminVisible\BannerController@store')->name('banners.store');
            Route::delete('/delete','AdminVisible\BannerController@delete')->name('banners.delete');
            Route::get('{banner}/edit', 'AdminVisible\BannerController@edit')->name('banners.edit');
            Route::patch('/{banner}', 'AdminVisible\BannerController@update')->name('banners.update');
        });

我的js文件:

   $(document).ready(function(){
  
  fetch_customer_data();
  
  function fetch_customer_data(query = '')
  {
   $.ajax({
    url:"{{ route('banner.action') }}",
    method:'GET',
    data:{query:query},
    dataType:'json',
    success:function(data)
    {
     $('tbody').html(data.table_data);
     $('#total_records').text(data.total_data);
    }
   })
  }
  
  $(document).on('keyup', '#search', function(){
   var query = $(this).val();
   fetch_customer_data(query);
  });
  });

【问题讨论】:

  • 让你的路由参数可选。将您的路线代码和控制器代码与您的问题一起发布,以便我们提供帮助
  • @sta 等一下。编辑:我在上面添加了它
  • $request-&gt;get('query') 如果您尝试使用 param 进行搜索,您会得到 null 吗?
  • 我认为data:{query:query}, 将是data: { query: $("#search").val() },
  • @sta 好的让我试试

标签: php ajax laravel


【解决方案1】:

变量$banner 从未初始化过,所以我在做类似的事情

foreach($data as $row)
{
    $banner = ['banner' => $row->id];
    $route = route('banners.edit',$banner);
    ....
}

【讨论】:

  • @JarioNavaMagana 谢谢我一直在寻找解决方案。成功了
  • 好像有点小问题:应该是这样onclick="location.href=' ' "但是好像不能这样说' '.$route.' '
  • 只使用反斜杠&lt;td onClick="location.href=\''.$route.'\' "
  • 你能帮我检查一下这个问题吗:[stackoverflow.com/questions/63591495/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2013-07-14
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
相关资源
最近更新 更多