在Laravel中使用AJAX时,Controller不会发回响应

时间:2017-03-16 16:31:58

标签: php ajax laravel response

因此,我一直在努力为我目前正在开展的项目创建一个实时搜索栏。我一直在关注本指南: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]);
            }
        }
    }
}

请忽略评论的代码,我用它来测试我的代码失败的地方。正如我所说:一切似乎都达到了控制器必须发回响应的程度。

我真的希望你们中的一些人可以帮助我。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

$('#searchbox').on('keyup', function(){
                            $value = $(this).val();
                            //alert($value);
                            $.ajax({
                                type: 'get',
                                url: 'livesearch',
                                data: {'search':$value},
                                succes:function(data){
                                    alert(data);
                                }
                            });
                        })

您的回调是“成功”,但实际上您必须使用“成功”。