#php #jquery #ajax #laravel #jquery-select2
#php #jquery #ajax #laravel #jquery-select2
Вопрос:
Когда AJAX вызывает мой метод laravel, метод вызывается, но переменная для поискового запроса равна нулю (используя Select2 для моего списка со списком). Однако тот же код отлично работает на моем локальном компьютере разработчика.
Я обновил laravel до версии 5.8.11, чтобы посмотреть, поможет ли это, поскольку на моем локальном компьютере была запущена немного более новая сборка, php, просмотренные журналы, chrome inspector, ничто не показывает никаких ошибок для этого.
public function get_codes(Request $request)
{
$search = trim($request->q);
if(empty($search))
{
return response()->json([]);
}
$data = [];
$data = DB::table("codes")
->select("id","dx_code", "description")
->where('dx_code','LIKE',"$search%")
->get();
return response()->json($data);
}
ajax: {
url: "/dxcodes",
dataType: "json",
delay: 250,
data: function (params) {
return {
q: $.trim(params.term)
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
}
мой ответ json: [] (после запуска тестов я обнаружил, что мой $request->q обрабатывается как пустой) однако, если я удалю if(пустой), я получу свой ответ. Я этого не понимаю … опять же, пожалуйста, помните, что все это отлично работает на моем локальном компьютере. У меня есть другие вызовы ajax в моем приложении на рабочем сервере, и они работают нормально, это всего лишь один вызов.
Исправление этой проблемы заключалось в том, что файл конфигурации веб-сервера nginx для этого сайта был установлен неправильно. Nginx не использует файлы .htaccess. Что? отсутствовал после index.php
try_files $uri $uri/ /index.php$query_string; (BAD)
try_files $uri $uri/ /index.php?$query_string; (GOOD)
Комментарии:
1. Можете ли вы предоставить версию Laravel, которую использует ваш проект?
2. Итак, в журналах консоли, Laravel нет ошибок?
3. @FrancinaldoAlmeida Я обновил свой вопрос, это версия 5.8.11
4. @Tarasovych Правильно, причина в том, что при запуске метода он переходит в предложение if(empty), поэтому ошибки не будет. Это та часть, которая не имеет смысла. почему он переходит в оператор if(empty), потому что, если я удалю пустой оператор, будет установлен var $request->q .
5. Пожалуйста, попробуйте зарегистрировать запрос
Log::debug($request->all());
и сообщите нам результат.