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.phpother.php実際に呼び出されることはないため、これは機能しません。

このことを考慮:

a.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含んでいる可能性があります。null

これは、定義されているすべての変数をチェックする簡単な方法です。

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

アップデート

jucoがあなたの解決策を見つけたようです。実際には、2番目のphpファイルにデータが投稿されていません。file_with_data_from_server.phpデータは最初の投稿でのみ利用可能であり、後続のリクエストでは利用できません。

あるリクエストでデータを送信し、後で別のリクエストでデータにアクセスする必要がある場合は、セッション変数やデータベースなどのどこかにデータを保存する必要があります。

PHPのすべてのリクエストは新しく、以前のリクエストのデータは含まれていません。これは「ステートレス」と呼ばれます。Googleには、ウェブアプリの無国籍を説明する多くの結果があります。

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

于 2013-03-21T20:40:29.717 に答える