0

我已经被这个错误困扰了很长时间,我只需要很少的 php 知识就可以解决它。所以我祈祷你的帮助。

我的问题是,在我向我的网站发出帖子(或 ajax)请求后,GET 请求消失了,从而给我留下了一个 NULL 对象(因为我从那个 id 创建了我的对象)。

我做了一些测试,问题在于我从 POST 得到的响应中的 GET 为 NULL。如果我忘记了 get 并且只是将 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。

我究竟做错了什么?

谢谢。

4

3 回答 3

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;

希望有帮助!

于 2012-12-07T19:33:47.367 回答
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 );
});
}
于 2012-12-07T19:33:31.797 回答
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 );
  });
}
于 2012-12-07T19:35:44.707 回答