繁体   English   中英

JQuery Ajax $_GET 请求收到来自 PHP 的错误响应

[英]JQuery Ajax $_GET request received an incorrect response from PHP

出了点问题:

我通过 ajax 请求向 php 发送数据。 它在那里检查收到了一个空的或非空的 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() )。

结果和以前一样:在 rate.php 中答案是正确的(取决于请求是空的还是带参数的),并且在带有表单的页面上总是只有一个答案:“空”。 而且,更奇怪的是,如果你返回 $_GET 数组,那么它会正确返回(当 $_GET 不为空时,它返回“空”而不是空数组)

if (!empty($_GET['rating'])){
    print_r($_GET);
    exit('not empty');
} else {
    print_r($_GET);
    exit("empty");
}

页面上的控制台答案返回“空”而不是空数组

Array
(
    [rate] => rating=1
)
empty

当您使用cache: false时, $_GET永远不会为空。 这通过向查询字符串添加一个额外的_=(timestamp)参数来工作,这样 URL 将始终不同,以防止它被缓存(这称为“cachebuster”)。 因此, $_GET['_']将始终被设置。

您应该在检查之前删除该元素。

unset($_GET['_']); // remove cachebuster
if (empty($_GET)) {
    echo "empty";
} else {
    echo "not empty";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM