发帖后,获取请求在php中消失

时间:2012-12-07 19:29:34

标签: php javascript post get

我已经坚持了这个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。

我做错了什么?

感谢。

3 个答案:

答案 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)

你做错了几件事:

  • 制作POST ajax请求,但同时搜索GET参数
  • 发布数据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 );
  });
}