如何调用ajax从数据库中检索数据

时间:2016-04-23 09:52:41

标签: php jquery ajax laravel laravel-5.2

我已经构建了一个laravel应用程序。我想在哪里使用日期范围搜索数据。在这里我使用控制器,在调用控制器之后,数据被检索并重定向到同一页面。这里有页面加载的情况。但我不想加载整个页面。而不是它,如果我想使用ajax只调用控制器将调用特定的控制器并且没有重定向。我如何使用Ajax做到这一点?

这是我的控制器:

public function reportByDate(Request $request)
{
     $revenue = DB::table('fees')
        ->join('courses', 'courses.id', '=', 'fees.course_id')
        ->join('users', 'courses.id', '=', 'users.course_id')            
        ->where('users.completed_status', '=', 1)
        ->sum('fee');

        $startDate = $request->Input(['sdate']);
        $finshDate=$request->Input(['edate']);


     $input = DB::table('fees')->join('courses', 'fees.course_id', '=','courses.id')
        ->join('users', 'users.course_id', '=', 'courses.id')
        ->where('users.completed_status', 1)
        ->whereBetween('users.date', [$startDate, $finshDate])
        ->groupBy('fees.course_id')
        ->selectRaw('SUM(fee) as fee, courses.name')
        ->get();


     return view('revenueDetails',['revenue'=>$revenue],['input'=>$input]);
}

以下是视图页面:

@extends('layouts.master')
@section('title')
Revenue Details
@endsection
@section('content')

<div class="container">
<h3> Revenue Details </h3>
</br>
</br>

  {!! Form::open(array('route' => 'reportByDate','class'=>'form-horizontal','method'=>'POST'))  !!}
  {!! Form::token(); !!}
  {!!   csrf_field() ; !!} 
          <div class="form-group">
              <label> Start Date</label>  
              <input type="date" name="sdate" class="form-control" >
          </div>
          <div class="form-group">
              <label> End Date</label>  
              <input type="date" name="edate" class="form-control" >
          </div>

          <button type="submit" class="btn btn-default">Submit</button>
    {!! Form::close() !!}



<h4>Total Revenue: {{$revenue}}</h4></br>
</br>

      <table  class="table table-striped table-bordered"  id="example">
        <thead>
          <tr>
            <td>Serial No</td>
            <td>Course Name</td>            
            <td>Course Revenue</td>                      
          </tr>
        </thead>
        <tbody>
      {{--    {{dd($input)}} --}}
          <?php $i=1; ?>
         @foreach($input as $row)

          <tr>
            <td>{{$i}}</td>
            <td>{{$row->name}}</td>
            <td>{{$row->fee}}</td>



          </tr>
            <?php $i++; ?>     
        @endforeach


        </tbody>


      </table>
        <li><a href="{{ route('userDetails') }}">See the User Details</a></li>
    </div>
@endsection

2 个答案:

答案 0 :(得分:0)

您可以使用json()帮助程序从控制器返回数据,而不是加载视图:

在您的控制器中:

TextView tv = (TextView) findViewById(R.id.textView4);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
    String currentDateandTime = sdf.format(new Date());
    tv.setText(currentDateandTime);

ajax调用的示例:

return response()->json([
    'revenue' => $revenue,
    'input'   => $input
], 200);

答案 1 :(得分:0)

你应该返回json响应并在ajax-callback函数中呈现你的html。 使用laravel很简单。而不是这个字符串“返回视图('revenueDetails',['revenue'=&gt; $ revenue],['input'=&gt; $ input]);” 使用此“return response() - &gt; json(['revenue'=&gt; $ revenue,'input'=&gt; $ input]);”

您可以在此处阅读如何执行ajax-request http://api.jquery.com/jquery.ajax/