Не работает кодировка utf-8 в ajax (автозаполнение) - PullRequest
0 голосов
/ 09 мая 2018

У меня очень простое приложение. Я отправляю простое имя и хочу получить автозаполнение.

Для этого я использовал плагин jquery autocomplete.

Когда я отправляю текст (Привет мир!), Я получаю - 10000 *

Я не понимаю, что не так.

Все файлы имеют кодировку - utf-8.
В HTML установить тег - meta charset = "utf-8"
В скрипте - encodeURIComponent (request.name)

Заголовки запроса:
Тип контента: application / x-www-form-urlencoded; charset = UTF-8
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU, ru; q = 0,9, en-US; q = 0,8, en; q = 0,7

Заголовки ответа:
Content-Type: text / html; charset = UTF-8
Контент-кодировка: br

JS:

    $('input[name=\'search_name\']').autocomplete({
    'autoFocus': true,
    'source': function(request, response) {
        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')
            },
            url: 'search/autocomplete',
            type: 'POST',
            dataType: 'json',
            data: {'filter_name':encodeURIComponent(request.name)},
            success: function(json) {
                response($.map(json, function(item) {
                    return {
                        label: item['name'],
                        value: item['client_id']
                    }
                }));
            }
        });
    },
    'select': function(event, obj) {
        addValue('addClient','client_id',obj.item.value,obj.item.label);
    }
});

PHP:

public function autocomplete(Request $request)
{
    $json = [];
    if ($request->has('filter_client')) {

        $client_info = \App\Models\Client::getClientByName($request->filter_client);
        if ($client_info) {
            foreach ($client_info as $client) {
                $json[] = [
                    'client_id' => $client->client_id,
                    'name' => $client->name,
                ];
            }
            unset($client_info);
        }
    }
    return response()->json($json);
}

1 Ответ

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

Если мы используем следующую js-функцию encodeURIComponent () в php, нам нужно использовать следующую функцию для стабильной работы скрипта - urldecode ().

...