Я использую jQuery для отправки HTTP-запросов на мою страницу PHP (Apache / Linux, если это имеет значение). Я тщательно проверяю на клиенте, чтобы пустые запросы не отправлялись. Однако в некоторых случаях я получал пустой запрос, подобный этому:
- Коллекция $ _POST пуста (коллекция $ _GET также пуста);
- Content-Length не равен нулю (число ниже 100, в соответствии с действующим POST из моего скрипта)
- Content-Type правильно application / x-www-form-urlencoded
- чтение из php: // input дает пустую строку
Как будто $ _POST как-то съедено в пути. Я очень тщательно проверил код - я ничего не делаю с содержимым $ _POST.
УТОЧНЕНИЕ: я ловлю это условие на сервере; это не так, как мой код ужасно умирает. Но у меня очень сильное чувство, что это не подлинное отсутствие пользовательского ввода, а какое-то повреждение данных в пути. Почему еще не было бы ненулевой длины содержимого?
Если проверка на стороне клиента не удалась, я получил бы $ _POST с пустыми полями. Так обстоят дела, у меня вообще нет полей. Совершенно недоумение.
Есть идеи, пожалуйста?
ОБНОВЛЕНИЕ: код отправки запроса на стороне клиента выглядит следующим образом:
var r = trim((re = document.getElementById("tread")).value),
m = trim((me = document.getElementById("tmean")).value);
if(r == "" && m == "")
alert("Please provide.");
else
{
$.post(URLPrefix + "tsearch.php", {R : r, M : m, Src:"bytext"}, DoneSearch, "html");
}
Существует также другой запрос к тому же серверному сценарию, который выглядит так:
$.post(URLPrefix + "tsearch.php", {K0 : KCode(0),
K1 : KCode(1), K2 : KCode(2), K3 : KCode(3),
P : document.getElementById("pos").checked ? 1 : 0,
Src:"bykanji"}, DoneSearch, "html");
Я не вижу, как этот код, где все поля являются безусловными, может обеспечить пустую коллекцию POST.