Переменная SESSION покажет ее определение - PullRequest
0 голосов
/ 25 февраля 2010

У меня возникла проблема с тем, что переменная SESSION "показывает" перед своим определением.

Index.php - мой сайт, на котором есть дизайн, а внутри - рамка. Теперь у index.php есть это:

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

Внутри фрейма есть файл insert.php, в котором хранятся данные для user_message_123456.

Теперь, прежде чем он будет сохранен, он покажет неопределенный ... но после того, как он был сохранен, он все равно будет отображаться как неопределенный, ДО того как вы обновите страницу ..

Но я хочу сделать это, когда вы сохраните сеанс, он отобразит его, и вам не нужно будет обновлять страницу (f5).

Я знаю, что это вызвано тем, что вы вызываете переменную $ _SESSION при загрузке index.php, и она не определена, если вы не запустили insert.php, но я хочу найти другой метод / способ сделать это.

Есть идеи, как это сделать? Примеры? покажи мне, пожалуйста !!

Ответы [ 2 ]

0 голосов
/ 09 апреля 2012

Чтобы показать некоторое новое содержимое во внешнем фрейме без перезагрузки, вы можете использовать простой 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 голосов
/ 25 февраля 2010

Звучит не вполне выполнимо, чтобы делать то, что вы хотите. Страницы, загруженные после других страниц, не могут вернуться назад и изменить прошлое.

Если вы абсолютно уверены, что фрейм является важной частью вашего подхода, вам придется использовать кросс-фреймовый Javascript, чтобы два документа могли обмениваться данными. Однако вполне может оказаться, что ваш поток приложений просто нуждается в изменении, чтобы сделать эту задачу ненужной. В зависимости от Javascript, когда это не нужно, неразумно.

...