繁体   English   中英

加载更多选项在 Laravel AJAX 中不起作用

[英]Load More option not working in Laravel AJAX

我正在尝试在 Laravel 中使用 AJAX 函数获取博客。 但它不起作用,也没有显示任何错误 我想要的是显示一个load more按钮,从那里使用 AJAX 请求加载更多博客。 这是我的前端代码:

     <div class="panel-body">
                  {{ csrf_field() }}
                  <div id="post_data"></div>
                </div>

还有我的ajax脚本:

$(document).ready(function(){
var _token = $('input[name="_token"]').val();
load_data('', _token);

function load_data(id="", _token)
{

 $.ajax({
  url:"{{ route('loadmore.load_data') }}",
  method:"POST",
  data:{id:id, _token:_token},
  success:function(data)
  {
   $('#load_more_button').remove();
   $('#post_data').append(data);
  }
 })
}

$(document).on('click', '#load_more_button', function(){
 var id = $(this).data('id');
 $('#load_more_button').html('<b>Loading...</b>');
 load_data(id, _token);
});
});

这是我的路线:

网页.php

Route::post('/loadmore', 'LoadMoreController@load_data')->name('loadmore.load_data');

这是控制器功能:

加载更多控制器.php

class LoadMoreController extends Controller
{
  public function load_more(){
    function load_data(Request $request)
   {
    if($request->ajax())
    {
     if($request->id > 0)
     {
      $data = DB::table('blogs')
         ->where('blog_id', '<', $request->id)
         ->orderBy('blog_id', 'DESC')
         ->limit(6)
         ->get();
     }

     else

     {
      $data = DB::table('blogs')
         ->orderBy('blog_id', 'DESC')
         ->limit(6)
         ->get();
     }

     $output = '';
     $last_id = '';

     if(!$data->isEmpty())
     {
      foreach($data as $row)
      {
       $output .= '
       <div class="row">
        <div class="col-md-12">
         <h3 class="text-info"><b>'.$row->blog_title.'</b></h3>
         <p>'.$row->blog_content.'</p>
         <br />
         <br />
         <hr />
        </div>
       </div>
       ';
       $last_id = $row->id;
      }
      $output .= '
      <div id="load_more">
       <button type="button" name="load_more_button" class="btn btn-success form-control" data-id="'.$last_id.'" id="load_more_button">Load More</button>
      </div>
      ';
     }
     else
     {
      $output .= '
      <div id="load_more">
       <button type="button" name="load_more_button" class="btn btn-info form-control">No Data Found</button>
      </div>
      ';
     }
     echo $output;
    }
   }
  }
}

如果需要或询问,我很乐意提供任何其他详细信息。 任何建议/解决方案将不胜感激。

Laravel 版本 8

web.php下面是路由文件:

<?php
    use Illuminate\Support\Facades\Route;
 
    Route::get('/loadmore', [App\Http\Controllers\LoadMoreController::class, 'index']);
    Route::post('/loadmore/load_data', [App\Http\Controllers\LoadMoreController::class, 'load_data'])->name('loadmore.load_data');

暂无
暂无

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

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