这是我的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;'
}
}
&GT;
// 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变量不存在
答案 0 :(得分: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);
}
});
答案 1 :(得分: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();
}
保持其他一切......