1

我有一个名为 的文件file_with_data_from_server.php,它$_POST['data]从一个AJAX电话中接收。我设法制作了一个新数组来包含来自服务器的数据。然后file_with_data_from_server.php将其包含在另一个.php文件中。自然地,file_with_data_from_server.php可以在包含它的文件上访问所有存在的变量,但在我的情况下,我无法访问其值取自json_decoded数据的变量。这是上的代码file_with_data_from_server.php

        $data_for_reports = $_POST['data']; // data from server

        $rrow = json_decode($data_for_reports);
        $dates_for_reports = array();
        foreach($rrow as $rr){
            $dates_for_reports[] = $rr->time_period;
        }
        $current_date_with_data = end($dates_for_reports);      // this contains data like '201301'

在我.php包含的文件中file_with_data_from_server.php,我有这个代码,

        include('file_with_data_from_server.php');
        echo '<pre>';
            print_r('test'.$current_date_with_data);
        echo '</pre>';

我正在尝试打印$current_date_with_data变量的值,但它什么也没显示。

4

2 回答 2

1

据我所知,您将包含file_with_data_from_server.php在另一个 PHP 脚本(以下称为other.php)中并发布到file_with_data_from_server.php,期望变量打印在other.php. 这是行不通的,因为other.php实际上根本没有调用。

考虑一下:

一个.php

$myVar = $_POST;

b.php

include('a.php');
var_dump($myVar);

如果你 POST 到a.php-b.php永远不会被调用!它includevar_dump在这种情况下永远不会被执行,因为只有a.php被调用过。

但是,根据上述情况,如果您要发布到b.php(包括a.php),这将按您的预期工作。

于 2013-03-21T20:39:28.437 回答
1

print_r()通话输出吗"test"?它可能$current_date_with_data包含 anull或不字符串化任何东西的东西。

这是检查您定义的每个变量的简单方法:

echo "<pre>";
echo HtmlSpecialChars(print_r($GLOBALS, true));
echo "</pre>";

更新

听起来juco找到了您的解决方案。您实际上并未将数据发布到您的第二个 php 文件中。数据将仅file_with_data_from_server.php在初始帖子中可用,而不是后续请求。

如果您需要在一个请求中发送数据并稍后在另一个请求中访问它,您需要将数据存储在某个地方,例如会话变量或数据库中。

PHP 中的每个请求都是新的,并且不包含来自先前请求的数据。这被称为“无状态”。谷歌有很多解释网络应用程序无状态的结果。

http://www.phpfreaks.com/tutorial/sessions-and-cookies-adding-state-to-a-stateless-protocol

于 2013-03-21T20:40:29.717 回答