Что-то не так происходит:
Я отправляю данные на php через запрос ajax. Там он проверил, что получил пустой или непустой GET и для каждой из этих опций он возвращает разные ответы. Проблема в том, что на странице php ответ правильный, но он становится неправильным, когда возвращается на страницу, с которой он был отправлен.
Когда GET пуст, php возвращает «пусто» (как и ожидалось), но ajax печатает «не пусто» (ожидается «пусто»)
Я абсолютно не понимаю, почему это происходит. Я пытался вернуть различные с выходом и возвращением
AJAX:
$(".rate_form .submit").click(function() {
var rate_form = $(this).parents().find('.rate_form');
var rate = rate_form.serialize();
$.ajax({
type: "GET",
url: "rate.php",
data: {
"rate": rate
},
cache: false,
success: function(response) {
console.log(response);
}
});
return false;
});
RATE. PHP:
header("Content-type: text/html; charset=utf-8");
if(empty($_GET)){
exit('empty');
}elseif (!empty($_GET)){
exit('not empty');
}
UPD: я попробовал @Barmar предложению
К сожалению, это не связано с проблемой. Я полностью избавился от «кеша», но ситуация не изменилась. Я даже пытался проверить только один аргумент $ _GET для empty()
(пробовал также isset()
).
Результат тот же, что и раньше: в курсе. php ответ правильный (в зависимости от того, пустой запрос или с аргументами) и на странице с формой всегда есть только один ответ: «пустой». Более того, даже более странно, если вы возвращаете массив $ _GET, то он возвращается правильно (когда $ _GET не пуст, он возвращает «пустой» и не пустой массив)
if (!empty($_GET['rating'])){
print_r($_GET);
exit('not empty');
} else {
print_r($_GET);
exit("empty");
}
Консольный ответ на странице возвращает "пусто" и не пусто массив
Array
(
[rate] => rating=1
)
empty