PHP 500 (внутренняя ошибка сервера) - встречается нечисловое значение? - PullRequest
0 голосов
/ 16 мая 2018

Я хочу иметь автозаполнение поиска с помощью jQuery и Laravel.Но я получаю сообщение об ошибке, когда пользователь пишет по крайней мере 2 буквы в поисковой строке:

GET http://proj.test/autocomplete-search?term=ca 500 (Internal Server Error)

Знаете ли вы, в чем проблема?Я хочу показать конференции на основе букв, введенных пользователем в форму поиска.

Ввод для поиска:

<div class="col col-md-6">
    <h4 class="text-white  text-center font-weight-bold">Search</h4>
    <form class="main-search">
        <input type="text" id="search" class="autocomplete dropdown-toggle" placeholder="Conference, Citiy, Category">
    </form>
</div>

Маршруты Laravel:

Route::get('/autocomplete-search', 'AutocompleteController@search');

Laravel AutomcompleteController:

class AutocompleteController extends Controller
{
    public function search(Request $request){
        $search = $request->term;
        $conferences = Conference::where('name', 'LIKE', '%'.$search.'%')->get();

        $data= [];
        foreach ($conferences as $key => $value){
            $data[] = ['id'=>$value->id, 'value' => $value->id + " " + $value->name];
        }

        //dd($data);
        return response($data);
    }
}

jquery:

$("#search").autocomplete({
   source: "{{ URL::to('autocomplete-search') }}",
   minLength: 2,
   select:function(key, value)
   {
       console.log(value);
   }
});

РЕДАКТИРОВАТЬ: На вкладке Сеть ошибка отображается как:

{сообщение: «Невстречено числовое значение ", исключение:" ErrorException ",…}

и указывает на эту строку:

{function:" search ", class:" App \ Http\ Controllers \ AutocompleteController ", введите:" -> "}". В "$ data [] = ['id' => $ value-> id, 'value' => $ value-> id +" "+ $ value-> имя];

1 Ответ

0 голосов
/ 16 мая 2018

Вы использовали оператор сложения (+), когда вам нужно использовать оператор конкатенации строк (.).

Так что

$data[] = ['id'=>$value->id, ' value' => $value->id + " " + $value->name]

должно стать

$data[] = ['id'=> $value->id, 'value' => $value->id . " " . $value->name]

в противном случае PHP думает, что вы пытаетесь добавить эти поля, когда на самом деле это текст, который вы хотите поместить в одну переменную.

См. http://php.net/manual/en/language.operators.php для получения информации о том, что операторы делают в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...