簡體   English   中英

使用Laravel Blade和Ajax進行即時搜索,

[英]Instant search with Laravel Blade and Ajax,

這是我的jQuery代碼

我正在嘗試運行代碼,而Laravel刀片未在foreach語句中識別$ results變量。 我沒有為表單添加代碼,也沒有添加路由。 他們工作完美。

主要問題是在我的刀片文件中顯示ajax的結果(視圖)

// My Controller where i'm executing the search

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;
use App\Tag;
use App\Lymstyle;
use App\Legende;
use App\Http\Requests;
use DB;
use Illuminate\Support\Facades\Input;

class SearchController extends Controller
{
    public function getResults()
    {
        $query = Input::get('search');

        $results = Post::where('title', 'LIKE', '%'.$query.'%')->get();

       ' return $results;'
    }
}

?>

// The Ajax Call, where i'm handling the post request and its reponse

var timer;

function keyUp()
{
    timer = setTimeout(function()
    {
        var keywords = $('#search').val();

        if(keywords.length > 0)
        {   
            var searchform  = $('.search').serializeArray();
            var url         = $('.search').attr('action');

            $.post(url, searchform, function(data){
                console.log(data);
                $('#search-results').html(data);
            });

        }

    }, 500);
}

function keyDown()
{   
    clearTimeout(timer);
}

<div id="search-results">
@foreach($results as $post)
     <h2>We found some...</h2>
@endforeach
</div>

我收到一個錯誤消息,說視圖中的$ results變量不存在

您可以json_encode變量。

public function getResults()
  {
    $query = Input::get('search');
    $results = Post::where('title', 'LIKE', '%'.$query.'%')->get();
    echo json_encode(array('status'=>TRUE,'results'=>$results)); die;
  }

jQuery和Ajax:

$(document).on('submit', '#formid', function (e) 
{         
    e.preventDefault();
    var frm = $(this);
    $.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize(),
        success: function (data)
            {
                var res = $.parseJSON(data);
                var result = res.results;
                 $('#search-results').html(result);
            }
});

我認為在您的控制器中,您需要返回視圖而不是結果。

首先將下面的函數放在單獨的刀片文件中,比如search.blade.php

@foreach($results as $post)
     <h2>We found some...</h2>
@endforeach

現在,在您的控制器中,返回渲染的視圖而不是結果。

public function getResults()
{

$query = Input::get('search');

$results = Post::where('title', 'LIKE', '%'.$query.'%')->get();

return view('search')->with('results',$results)->render();

}

保持其他所有內容不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM