Laravel搜索功能中的Ajax不起作用



现在它没有显示任何数据;

控制台:finished loading: GET "http://todolist.local/teachers/search?text=a".

当用户在搜索中键入某些内容时,我正在尝试在 tbody 中显示结果。

阿贾克斯代码:

<script>
$(document).ready(function(){
$('#searchname').on('keyup', function(){
var text = $('#searchname').val();
$.ajax({
type:"GET",
url: 'teachers/search',
data: {text: $('#searchname').val()},
success:function(data){
$('tbody').html(data);
}
});
});
});
</script>

网站.php:

Route::get('/search', 'TeachersController@ajaxsearch');

搜索控制器:

public function ajaxsearch(){
$searchname = Input::get ( 'searchname' );
if($searchname != ""){
$teacher = Teacher::where ( 'efirst', 'LIKE', '%' . $searchname . '%' )->paginate(10);
return response()->json($teacher);
}
}

视图:

<div class="input-group stylish-input-group">
<input type="text" id="searchname" name="searchname" class="form-control"  placeholder="Search..." >
<span class="input-group-addon">
<button type="submit" class="btn btn-primary">
<span class="glyphicon glyphicon-search">Search</span>
</button>
</span>
</div>

这应该可以解决问题

.HTML:

<div id="datasearch"></div>

.JS:

$(function(){
$('#searchname').on('keyup', function(){
$.get('/teachers/search/'+$(this).val(), function(response){
$('#datasearch').html(response);
});
});
});

控制器:

public function ajaxsearch(string $value = null){
return $value ? Teacher::whereRaw("UPPER(efirst) LIKE '%".strtoupper($value)."%'")->paginate(10) : [];
}

路线:

Route::get('/teachers/search/{value?}', 'TeachersController@ajaxsearch');

聊天后的版本

.HTML:

<ul id="datasearch"></ul>

.JS:

$(function(){
var $datasearch=$('#datasearch');
$('#searchname').on('keyup', function(){
$.get('/teachers/search/'+$(this).val(), function(teachers){
$datasearch.empty();
for (var i=0; i<teachers.length; i++){
$datasearch.append('<li>'+teachers[i].efirst+' <a href="/teachers/edit/'+teachers[i].id+'">edit</a></li>');
}
});
});
});

控制器:

public function ajaxsearch(string $value = null){
return $value ? Teacher::select('id','efirst')->whereRaw("UPPER(efirst) LIKE '".strtoupper($value)."%'")->offset(0)->limit(10)->get() : [];
}

路线:

Route::get('/teachers/search/{value?}', 'TeachersController@ajaxsearch');

你知道jquery ajax中的error函数吗?

$(document).ready(function(){
$('#searchname').on('keyup', function(){
var text = $('#searchname').val();
$.ajax({
type:"GET",
url: 'teachers/search',
data: {text: $('#searchname').val()},
success:function(data){$('tbody').html(data);},
error:function(jqXHR){alert(jqXHR.status);} 
});
});
});

你可以试试这个,如果有一些,它会显示错误,文本应该在反逗号中,因为它是一个键值对。

在搜索控制器中,您访问了错误的输入名称。应该是这样的

public function ajaxsearch(){
$searchname = Input::get ( 'text' );
if($searchname != ""){
$teacher = Teacher::where ( 'efirst', 'LIKE', '%' . $searchname . '%' )->paginate(10);
return response()->json($teacher);
}
}

首先,只需手动转到 URL 并输入参数即可。
http://todolist.local/teachers/search?text=a
如果您得到任何回复。这意味着你的PHP工作得很好。

如果收到错误,则使用的是 GET 方法。请在路由中传递变量参数

Route::get('/search/{searchName}', 'TeachersController@ajaxsearch');

并请更正您的控制器

public function ajaxsearch($searchname){
if($searchname != ""){
$teacher = Teacher::where ( 'efirst', 'LIKE', '%' . $searchname.'%' )->paginate(10);
return response()->json($teacher);
}
}

其次,请在 Jquery for GET 方法 AJAX 中使用 $.get 方法

<script>
$(document).ready(function(){
$('#searchname').on('keyup', function(){
var text = $('#searchname').val();
$.get(urlHere, function(response){
console.log(response);
});
});
});
</script>

查看控制台选项卡,如果收到响应

最新更新