отображение содержимого php в новом окне JavaScript

#php #javascript

#php #javascript

Вопрос:

Вот код, который у меня есть до сих пор:

 $output = <<<BLOCK

    <html>
        <head>
            <title>Preview!</title>

            <script type="text/javascrit">
                var content = $data;
            </script> 

        </head>
        <body>
            <a href="" onclick="preview()">Click Me!</a>
            <script type="text/javascript"> 
                function preview(){
                    var preview = window.open('','preview','scrollbars=1,height=500,width=500,resizable=1');
                    preview.document.open();
                    preview.document.write(content);
                    preview.document.close(); 

                }
            </script> 
        </body>
    </html>     
BLOCK;
echo $output;   
  

$data содержит полный html-документ, созданный php-скриптом.

Похоже, это не работает, но я думаю, вы можете понять, что я пытаюсь сделать.

Комментарии:

1. «javascrit» -> «javascript», но я сомневаюсь, что это ваша проблема. «[кажется, что] не работает» — это фраза, которую следует запретить в SO, потому что она так мало значит. Если это не сработало, что произошло ?

2. Появится новое окно, адрес примерно: пустой, заголовок без названия, а содержимое пустое. — То, что находится в $data, — это просто обычный html, ничего особенного.

Ответ №1:

Мы должны знать, что содержит $data , но вам, безусловно, нужно избегать кавычек или специальных символов…

Ответ №2:

«данные» генерируются из другого скрипта … мы можем это увидеть? ОБНОВЛЕНО: Вы не можете передать «содержимое» из head в body таким образом, оно равно null, попробуйте в качестве заданного параметра функции предварительного просмотра. Попробуйте получить к нему доступ, выполнив OPEN() .

Или сохраните «данные» в скрытом div или получите их через AJAX (предпочтительно). content2=null; content=»asdsadas»;

 $data="asdsadas";
$output = "
    <html>
        <head>
            <title>Preview!</title>

            <script type="text/javascript">
                var content2 = '".$data."'
            </script> 

        </head>
        <body>
            <a href="" onclick="preview()">Click Me!</a>
            <script type="text/javascript"> 
                function preview(){
                var content = '".$data."'
                    var preview = window.open('','preview','scrollbars=1,height=500,width=500,resizable=1');
                    preview.document.open();
                    preview.document.write(content);
            preview.document.write(content2);
                    preview.document.close(); 

                }
            </script> 
        </body>
    </html>";
echo $output;  
  

Комментарии:

1. Привет, KA_lin, вы были очень полезны, я хотел бы оценить вас только за это, если это разрешено. Я решил свою проблему совсем по-другому. В вашем примере передача «простой» строки не вызвала никаких проблем. Именно тогда, когда я попытался передать некоторые html-теги / содержимое, у меня начались проблемы — у меня было более 200 строк HTML-содержимого. некоторые ошибки, которые я получил, заключались в том, что я использовал строковый литерал, неопределенную функцию и синтаксическую ошибку. (Я, вероятно, должен был упомянуть об этом ранее)

2. Я сделал две вещи, чтобы решить свою проблему: 1. разбил строку на массив 2. запустил addslahses для каждого значения массива. Затем я использовал document.write для вывода каждого элемента массива. Еще раз спасибо