@sagechild
программист php

Почему JQuery при отправке POST запроса на url, содержащий escape кириллицу, не передает данные в $_POST?

Всем, привет.
Возникла проблема, никак не могу найти решение. Прошу помощи. Суть вопроса. Отправляем данные из браузера на сервер:
// c подобным урл $_POST на сервере заполняется данными из $data
var $url = '/category/tag/qweqwe-21321';
// с подобным url $_POST на сервере не заполняется данными из $data, в нем кириллица кодирована encodeURIComponent
$url = '/category/tag/%D0%91%D0%B8%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F';
var $data = {'left_menu_filter': $left_menu_filter, 'ajax-action': 'find-programm'};
$.post({
    url: $url,
    data: $data,
    success: actionAfterSendLeftMenuFormData,
    dataType: 'json'
});


Проблема в том, что когда отправляем запрос на url, содержащий кодированную кириллицу, то на сервере php не заполняет массив $_POST. А также, в этом случае, в массиве $_SERVER имеются значения:
[REQUEST_METHOD] => GET
[REQUEST_URI] => /category/tag/%D0%91%D0%B8%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F
То есть на стороне сервера запрос воспринимается как GET, а не POST.
В браузере в отладчике показываются при этом значения:
Request Method: POST
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Form Data (POST данные), пример:
left_menu_filter[categoryId]: 50
left_menu_filter[specialization][]: 371
left_menu_filter[price_from]: 2390
left_menu_filter[price_to]: 21900
ajax-action: find-programm


Подскажите, где закралась ошибка?
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@sagechild Автор вопроса
программист php
В общем, проблема оказалась в правилах mod_rewrite web-сервера Apache. Так как, когда в запросе кириллица, не срабатывало ни одно правило и редиректило на 404.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@frees2
Этот не квайри, можно без escape передавать через fetch
Request, fetch и :focus, что ещё можно прикрутить?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы