【发布时间】:2020-08-04 19:20:03
【问题描述】:
出了点问题:
我通过 ajax 请求向 php 发送数据。它在那里检查收到了一个空的或非空的 GET,并且对于每个选项它返回不同的答案。问题是在 php 页面上答案是正确的,但是当它返回到发送它的页面时它变得不正确。
当 GET 为空时,php 返回 'empty'(如预期),但 ajax 打印 'not empty'(预期为 'empty')
我完全不明白为什么会这样。我尝试使用 exit 和 return 返回各种
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 的建议
很遗憾,这与问题无关。我完全摆脱了“缓存”,但情况并没有改变。我什至尝试只检查empty() 的一个 $ _GET 参数(也尝试isset())。
结果和以前一样:在rate.php中答案是正确的(取决于请求是空的还是带参数的),并且在带有表单的页面上总是只有一个答案:“空”。而且,更奇怪的是,如果你返回$_GET数组,那么它返回正确(当$_GET不为空时,它返回“空”和not empty数组)
if (!empty($_GET['rating'])){
print_r($_GET);
exit('not empty');
} else {
print_r($_GET);
exit("empty");
}
页面上的控制台答案返回“空”且非空数组
Array
(
[rate] => rating=1
)
empty
【问题讨论】:
-
你只是说它“不正确”。但是你期待什么,你会得到什么?
-
我不明白你在说什么答案变得不正确。你如何检查它是正确的还是错误的?
-
页面上是否有多个
.rate_form?你正在序列化所有这些。我想你想要var rate_form = $(this).closest(".rate_form"); -
@Barmar 我只有一个 .rate_form。尝试解释一下:当GET为空时,php返回'empty',而ajax打印'not empty'。
-
cache: false增加了一个额外的参数,所以$_GET永远不会为空。
标签: php jquery ajax get ajaxform