在 Laravel 中使用 AJAX 时控制器不会发回响应
Controller won't send a response back when using AJAX in Laravel
所以我一直在尝试为我目前正在进行的项目创建一个实时搜索栏。我一直在关注这个指南:https://www.youtube.com/watch?v=y9WKRlJ1JGM
但这对我不起作用,经过大量测试后我可以肯定地说 AJAX 请求被发送到正确的控制器,并且正在执行必要的数据库查询。但是没有任何内容被发送回页面。我已经研究了整整一天,但似乎找不到任何具有类似问题的文章。我也没有收到任何错误消息,它什么也没做。
这是我的一些代码:
Javascript
$('#searchbox').on('keyup', function(){
$value = $(this).val();
//alert($value);
$.ajax({
type: 'get',
url: 'livesearch',
data: {'search':$value},
succes:function(data){
alert(data);
}
});
})
路线:
Route::get('livesearch','AjaxController@livesearch');
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
class AjaxController extends Controller {
public function livesearch(Request $request) {
if ($request->ajax())
{
$output = '';
$searchresults = User::where('firstname', 'LIKE', '%' . $request->search . '%')->orWhere('lastname', 'LIKE', '%' . $request->search . '%')->get();
//print_r($searchresults);
if($searchresults)
{
foreach ($searchresults as $key => $searchresult) {
$output .= $searchresult->firstname .
' ' .
$searchresult->lastname .
' | ' .
$searchresult->company .
'<br>';
}
//return $output;
return Response($output);
//return Response::json(['data' => $output]);
}
}
}
}
请忽略注释代码,我用它来测试我的代码失败的地方。正如我所说:在控制器必须发回响应之前,一切似乎都正常。
我真的希望你们中的一些人能帮助我。
提前致谢!
$('#searchbox').on('keyup', function(){
$value = $(this).val();
//alert($value);
$.ajax({
type: 'get',
url: 'livesearch',
data: {'search':$value},
succes:function(data){
alert(data);
}
});
})
你的回调在"succes",但实际上你必须使用"success"。
所以我一直在尝试为我目前正在进行的项目创建一个实时搜索栏。我一直在关注这个指南:https://www.youtube.com/watch?v=y9WKRlJ1JGM
但这对我不起作用,经过大量测试后我可以肯定地说 AJAX 请求被发送到正确的控制器,并且正在执行必要的数据库查询。但是没有任何内容被发送回页面。我已经研究了整整一天,但似乎找不到任何具有类似问题的文章。我也没有收到任何错误消息,它什么也没做。
这是我的一些代码:
Javascript
$('#searchbox').on('keyup', function(){
$value = $(this).val();
//alert($value);
$.ajax({
type: 'get',
url: 'livesearch',
data: {'search':$value},
succes:function(data){
alert(data);
}
});
})
路线:
Route::get('livesearch','AjaxController@livesearch');
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
class AjaxController extends Controller {
public function livesearch(Request $request) {
if ($request->ajax())
{
$output = '';
$searchresults = User::where('firstname', 'LIKE', '%' . $request->search . '%')->orWhere('lastname', 'LIKE', '%' . $request->search . '%')->get();
//print_r($searchresults);
if($searchresults)
{
foreach ($searchresults as $key => $searchresult) {
$output .= $searchresult->firstname .
' ' .
$searchresult->lastname .
' | ' .
$searchresult->company .
'<br>';
}
//return $output;
return Response($output);
//return Response::json(['data' => $output]);
}
}
}
}
请忽略注释代码,我用它来测试我的代码失败的地方。正如我所说:在控制器必须发回响应之前,一切似乎都正常。
我真的希望你们中的一些人能帮助我。 提前致谢!
$('#searchbox').on('keyup', function(){
$value = $(this).val();
//alert($value);
$.ajax({
type: 'get',
url: 'livesearch',
data: {'search':$value},
succes:function(data){
alert(data);
}
});
})
你的回调在"succes",但实际上你必须使用"success"。