2016-09-01 84 views
0

即時搜索這裏是我的jQuery代碼與Laravel刀片和Ajax,

我試圖運行的代碼和Laravel刀片不能認識到foreach語句的結果$變量。 我沒有添加表單的路由代碼。他們完美地工作。

的主要問題是從阿賈克斯在我的刀片文件中顯示的結果(圖)

// 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> 

我收到一個錯誤說在$結果變量該視圖不存在

+0

可以滯後什麼這是其中刀片文件和控制器的一部分,, – jaysingkar

+0

周杰倫嗨,我剛纔編輯的更多的細節後,請看看 – Beni

+0

我認爲你做錯了..檢查我的答案 – jaysingkar

回答

0

您可以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); 
      } 
}); 
0

我想在你的控制器,你沃爾德需要,而不是返回結果的看法。

首先把你下面的函數在單獨的刀片文件,可以說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(); 

} 

保持一切相同..

+0

沒有工作可惜:( – Beni

+0

@Beni什麼是錯誤? – jaysingkar

+0

未定義的變量:結果(查看:/Applications/MAMP/htdocs/limbolamagazine/resources/views/public/includes/search.blade.php)(查看:/應用程序/ MAMP/htdocs/limbolamagazine/resources/views/public/includes/search.blade.php) 這就是我得到的 – Beni