2013-03-21 32 views
1

我有一個名爲file_with_data_from_server.php的文件,它從AJAX調用中收到$_POST['data]。我設法創建一個新的數組來包含來自服務器的數據。然後這個file_with_data_from_server.php被包含在另一個.php文件中。當然,file_with_data_from_server.php上的所有變量都可以在包含它的文件上訪問,但在我的情況下,我無法訪問變量,其中的值取自json_decoded數據。這是file_with_data_from_server.php代碼,變量不能在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變量的值,但它不顯示任何內容。

+0

您是否嘗試轉儲該變量(在第一個文件中)? – Uby 2013-03-21 20:20:41

+0

@Uby,當然有它的數據。 – 2013-03-21 20:21:28

+0

所以你發佈到'file_with_data_from_server.php',但包括它在另一個.php頁面? – juco 2013-03-21 20:27:52

回答

1

從我可以收集要包括在其它PHP腳本(以下簡稱other.php)和張貼file_with_data_from_server.phpfile_with_data_from_server.php,預計在other.php要打印的變量。這不會起作用,因爲實際上並沒有調用other.php

考慮一下:

a.php只會

$myVar = $_POST; 

b.php

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

如果您發佈到a.php - b.php永遠不會調用!這是includevar_dump在這種情況下將永遠不會執行,因爲只有a.php已被調用。

但是,在上述情況下,如果您要發佈到b.php(其中包括a.php),您可能會像預期的那樣工作。

+0

所以你建議我發佈到'b.php'而不是發佈到'a.php'? – 2013-03-21 20:43:20

+0

在這種情況下'a.php'不知道'b.php'想要包含它 - 它永遠不會被加載。所以在這種情況下,你必須,是的。 – juco 2013-03-21 20:44:47

+0

看起來海報不能犯這個錯誤,因爲他們說''test''正在輸出。但他們可能會談論2個不同的要求。 – Cal 2013-03-21 20:49:07

1

print_r()呼叫輸出"test"?可能是因爲$current_date_with_data包含null或者某些東西不會串聯到任何東西。

這是一個簡單的方法來檢查每個變量你定義:

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

UPDATE

這聽起來像JUCO找到解決方案。你實際上沒有把數據發佈到你的第二個php文件。該數據僅在初始文章中可用於file_with_data_from_server.php,而不是後續請求。

如果您需要在一個請求中發送數據並稍後在另一個請求中訪問它,則需要將數據存儲在某個地方,如會話變量或數據庫中。

PHP中的每個請求都是新的請求,並且不包含先前請求的數據。這被稱爲「無狀態」。谷歌有很多結果解釋web應用中的無狀態。

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

+0

它肯定會輸出''test'',就是這樣。 – 2013-03-21 20:44:14

+0

使用我的示例代碼轉儲所有全局變量時會發生什麼? – Cal 2013-03-21 20:47:39

+0

它返回這個錯誤,「嵌套級別太深 - 遞歸依賴性」。 – 2013-03-21 20:48:57