如何在两个日期之间进行搜索并在同一页面中显示它们

时间:2018-02-13 14:47:47

标签: jquery ajax laravel

所以我有两个输入字段,当我点击它时,它会给我日历。我有两个领域。一个来自。而另一个。我有一个标有“搜索”的按钮。

所以我在想,如何在laravel中编写代码以获取这两个日期,并在这两个日期之间给出结果?我可以在我的数据库上使用“created_at”时间戳来执行此操作吗?我的意思是日期选择器

另外,如何使用AJAX将数据加载到同一页面?我有一个查询来从模型中获取所有数据并显示到索引函数。它也是分页的。那么我怎么能使用ajax。

由于

更新

这是我到目前为止所拥有的。这是我的html表单:

{!! Form::open(['method'=>'POST', 'action'=>'AdminViewController@search']) !!}

        <input type="text" id="from" name="from">
        <input type="text" id="to" name="to">
        <input type="submit" id="search" value="Search">

{!! Form::close() !!}

这是我的表(注意:当前的foreach循环取自我的控制器以放置一些样本数据):

<table class="table">
                <thead>
                <tr>

                    <th>Room Number</th>
                    <th>Cleaned By</th>
                    <th>Total Time</th>
                    <th>Supervised</th>
                    <th>Issues</th>
                    <th>Cleaned</th>
                    <th>View</th>
                </tr>
                </thead>
                <tbody>
                @foreach($clean as $cleans)
                    <tr>

                        <td>{{$cleans->roomnumber}}</td>
                        <td>{{$cleans->users->name}}</td>
                        <td>{{$cleans->roomnumber}}</td>
                        @if($cleans->verified == 1)<td class="verified">Yes</td>@else()<td class="notverified">No</td>@endif
                        @if($cleans->img1 || $cleans->img1 || $cleans->img1 == !null)<td class="verified">Yes</td>@else()<td class="notverified">No Issues</td>@endif
                        <td>{{$cleans->created_at->diffForHumans()}}</td>
                        <td><a href="{{route('starlord.show', $cleans->id)}}"><i class="lnr lnr-eye"></i></a></td>
                    </tr>
                @endforeach
                </tbody>
            </table>

这是我的路线(分组为管理员):

    Route::get('/search', 'AdminViewController@search');
    Route::post('/search', 'AdminViewController@search');

我的处理搜索的控制器:

public function search(Request $request){

        $data =  $request->only(['from', 'to']);
        $data['to'] .= ' 23:59:59';
        $output = Clean::whereBetween('created_at', $data)->get();

        return json_encode($output);
    }

最后这是AJAX。

$(document).ready(function(){
            $("#search").click(function(event){ 
                event.preventDefault();


                $.get("/admin/search", function(data, status){
                    console.log("Data: " + data + "\nStatus: " + status);
                });
            });
        });

当我简单地将它返回到没有ajax的视图时,搜索结果非常完美。没有问题。但问题是,当我从我的ajax控制日志时,有500个内部错误。这是错误:

GET http://test.com/admin/search 500 (Internal Server Error)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
n.(anonymous function) @ jquery.min.js:4
(anonymous) @ view:233
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3

(anonymous) @ view:233就是这一行:

$.get("/admin/search", function(data, status){

为什么我没有收到回复?如果我从我的按钮中移除event.preventDefault();,它会转到/admin/search(显然)。我对ajax没有太多经验,但我正在努力。 非常感谢。

2 个答案:

答案 0 :(得分:0)

以下是在两个日期之间获取数据的方法 例如:

$start_of_year = Carbon::createFromDate($application->created_at)->startOfYear();
$end_of_year = Carbon::createFromDate($application->created_at)->endOfYear();
//dd($year,$start_of_year,$end_of_year);
$new = Application::where('status','new')
                    ->whereBetween('created_at',
                        [ $start_of_year,$end_of_year])
                    ->get();

答案 1 :(得分:0)

对于想知道如何使用laravel从whereBetween获取数据的任何人,我的问题已经更新。

以上是针对上述问题的固定且有效的Json(带注释)。

$(function() {


        $('.form').submit(function(event) {


            // get the form data in value key pair using jquery serialize
            var data = $(this).serialize();
            // get the url we are posting to from the forms action attribute
            //var url  = $(this).attr('/admin/search');

            // process the form
             $.ajax({
                type: "POST", // define the type of HTTP verb we want to use (POST for our form)
                url: "search", // the url where we want to POST
                data: data, // the url where we want to POST, set in variable above
                dataType: "json", // what type of data do we expect back from the server
                encode          : true,
                 success: function (data) {
                     console.log(data);
                 }
            });



            // using the done promise callback (success)
            // search.done(function(data) {
            //
            //
            //     // log data to the console so we can see
            //     console.log(data);
            //
            //     // here we will handle errors and validation messages
            // });

            // stop the form from submitting the normal way and refreshing the page
            event.preventDefault();

        });//submit function

    });//doc ready end

希望这有助于解决您的问题:D