我已经坚持了这个bug很长一段时间了,而我只需要很少的PHP知识来解决它。所以我祈求你的帮助。
我的问题是,在我向我的网站发出帖子(或ajax)请求后,GET请求消失了,因此留下了一个NULL对象(因为我从该id创建了我的对象)。
我做了一些测试,问题是在我从POST获得的响应中GET是NULL。如果我忘记了获取并且只是将id作为随机数启动,则不会发生这种情况。
以下是我的代码的一些部分,我认为问题是:
首先是带有我的GET的PHP:
require 'php/functions.php';
if (isset($_GET['id'])) {
$id = $_GET['id'];
// $id = 5;
try {
$bar = getBarById($id);
} catch (exception $e) {
exit;
}
在此之后我从对象输出一些日期并且它工作正常,GET正在这里启动。
现在。当我使用我的ajax(我也试过常规的POST)请求时,来自POST的状态响应是正常的,但之后没有任何反应,并且det响应表明我的GET请求为NULL。
JS:
<script language="javascript" type="text/javascript">
function save(value) {
$.ajax({
type: "POST",
url: "barpage.php",
data: { save_sum: value }
}).done(function(msg) {
msg.preventDefault();
alert( msg );
});
}
仅供记录。来自ajax的“msg”响应告诉我没有任何反应。并且“$ id”为NULL。
我做错了什么?
感谢。
答案 0 :(得分:2)
这是交易:
您的AJAX请求正在执行POST请求,因此GET数组未被填充,因为您正在执行POST请求而不是GET请求。快速解决方法是将Id作为ajax请求的一部分发送到您的php文件中,请求如下:
$id = isset($_GET['id']) ? $_GET['id'] : null;
if($id == null) {
$id = isset($_POST['id']) ? $_POST['id'] : null;
}
另一种解决方案
$id = null;
if($_SERVER['REQUEST_METHOD'] == "GET") {
$id = isset($_GET['id']) ? $_GET['id'] : null;
}
if($_SERVER['REQUEST_METHOD'] == "POST") {
$id = isset($_POST['id']) ? $_POST['id'] : null;
}
更好的解决方案(来自下面的评论)
$id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
希望有所帮助!
答案 1 :(得分:0)
您POST
将您的数据发送到您的PHP页面,而不是发送GET
请求。
function save(value) {
$.ajax({
type: "GET",
url: "barpage.php",
data: { save_sum: value }
}).done(function(msg) {
msg.preventDefault();
alert( msg );
});
}
或者您可以执行POST
,但将GET
变量放在url
对象中:
function save(value) {
$.ajax({
type: "POST",
url: "barpage.php?id=5",
data: { save_sum: value }
}).done(function(msg) {
msg.preventDefault();
alert( msg );
});
}
答案 2 :(得分:0)
你做错了几件事:
save_sum
但请查找id
无论如何这里是可能的解决方案,但我们无法猜测你到底做了什么:
试试这个:
$.ajax({
type: "POST",
url: "barpage.php?id=<?php echo $_GET['id']; ?>",
data: { save_sum: value }
}).done(function(msg) {
msg.preventDefault();
alert( msg );
});
}
或将类型更改为“GET”:
$.ajax({
type: "GET",
url: "barpage.php?",
data: { save_sum: value, id: <?php echo $_GET['id']; ?> }
}).done(function(msg) {
msg.preventDefault();
alert( msg );
});
}