2010-02-24 71 views
0

林站在了一個問題,即會話變量是「展示」其定義之前..SESSION變量顯示其之前定義

的index.php是我的地盤,那裏是一個設計和內部有一個框架。現在,index.php文件有這樣的:

<div id='message2' onclick="closeNotice2()" style="display: none"> 
<? echo $_SESSION["user_message_123456"]; ?> 
</div> 

框架內,有一個數據存儲到一個user_message_123456 insert.php。

現在已被存儲在它之前,它會顯示未定義的..但它已被存儲後,它仍然會顯示在未定義的,直到你刷新頁面..

但是,我想這樣做,當你存儲會話時,它會顯示它,你不需要刷新頁面(f5)。

我知道這是因爲你在加載index.php時調用$ _SESSION變量,除非你沒有運行insert.php, 但我想找到另一種方法/方法來做到這一點。

任何想法如何做到這一點?例子?告訴我,請!

回答

0

這聽起來不是特別可行的做你想做的事情。在其他頁面加載後的頁面不能完全返回並更改過去。

如果您確定該框架是您的方法的重要組成部分,那麼您必須使用跨框架JavaScript來允許這兩個文檔進行通信。但是,很可能您的應用程序流只是需要修改才能使此任務變得不必要。根據不需要的Javascript是不明智的。

0

要在外框上顯示一些新內容而不重新加載,可以使用一些簡單的JavaScript。

將以下腳本添加到您的insert.php文件,在你已經寫入的值到$ _SESSION陣列的一部分:

<script type="text/javascript"> 
    var container = parent.document.getElementById('message2'); 
    container.innerHTML = '<?=$_SESSION["user_message_123456"]?>'; 
</script> 

一些提示:

  • 這將設置將您的<div id='message2'...的內容添加到變量的值中。
  • 如果它不工作,</script>結束標記前添加以下行:

    alert('Script is working'); 
    

    現在檢查,如果你看到彈出消息insert.php負載時。如果不是,則表示該腳本未被執行;所以它被放置或者內部<head>或剛結束前移動代碼</body></html>

希望這有助於

+0

'container.innerHTML = '<= $ _ SESSION [ 「user_message_123456」]?>';'什麼? – 2012-04-09 05:54:09

+0

@arxanas這是一個PHP [開放標籤](http://www.php.net/manual/en/language.basic-syntax.phpmode.php)。 ''是<?php echo $ myVar; ?>'。在這種情況下,我將會話變量的值打印到JavaScript字符串中。 – MrFusion 2012-04-09 08:27:25

+0

我知道這一點,但在我看來,當代碼被調用時,你想讓Javascript獲得'$ _SESSION'的值。我的錯誤,對不起。(但也不建議使用短標籤。) – 2012-04-09 19:22:07