У меня есть веб-сайт на основе php. Как и в случае, все страницы html выводятся через php.
Вот простой пример:
<?php ob_start(); $pageStart = ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>MY WEBSITE PAGE</title> </head> <body> <p>CONTENT</p> </body> </html> '; echo $pageStart; exit; ?>
То, что я хотел бы сделать, это использовать некоторые jquery на этой странице.
Поэтому, естественно, моя первая попытка заключалась в том, чтобы включить скрипт внутри переменной php так:
<?php ob_start(); $pageStart = ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type="text/javascript"> var datefield=document.createElement("input") datefield.setAttribute("type", "date") if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') } </script> <script type="text/javascript"> if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: jQuery(function($){ //on document.ready $('#birthday').datepicker(); }) } </script> </head> <body> <p>CONTENT</p> </body> </html> '; echo $pageStart; exit; ?>
Теперь я использую редактор кода Dreamweavers, который из-за функции подсветки синтаксиса укажет на массу созданных в результате синтаксических ошибок.
Поэтому я сначала попытался сократить эти ошибки. Это не удалось.
Поэтому я попытался изменить «s to» s и наоборот, пока ошибки не исчезли. Это тоже не получилось, так как кажется, что скрипт не будет проверять таким образом.
Поэтому я прочитал несколько руководств и нашел это:
JavaScript и PHP могут принести большой потенциал для любых усилий по разработке веб-сайтов, но они не всегда хорошо сочетаются друг с другом. Читайте о проблемах.
И то, как я это понимаю, заключается в том, что вам нужно будет включить js, а не напрямую, как часть вашего php.
Так что у вас есть файл под названием page.php, а другой – jquery.php. Поэтому я решил попробовать и изменить эту идею, чтобы удовлетворить мою проблему.
Поэтому я начал с чего-то вроде этого – index.php:
<?php ob_start(); $pageStart = ' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>MY WEBSITE PAGE</title> '. include $_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php'.' </head> <body> <p>CONTENT</p> </body> </html> '; echo $pageStart; exit; ?>
И – datepicker.php:
<script language="Javascript"> var datefield=document.createElement("input") datefield.setAttribute("type", "date") if (datefield.type!="date"){ //if browser doesn't support input type="date", load files for jQuery UI Date Picker document.write('<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />\n') document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"><\/script>\n') document.write('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"><\/script>\n') } </script> <script language="Javascript"> if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: jQuery(function($){ //on document.ready $('#birthday').datepicker(); }) } </script>
Теперь нет синтаксических ошибок на любой странице, отлично … Поэтому я стараюсь, наполовину ожидая, что все, наконец, просто сработает …
Nope … Fatal Error: не удалось открыть поток: нет такого файла или каталога blah blah. Эта ошибка относится к включению, которое я добавил. Так что хорошо, даже если файл есть, он не проверяется как php, потому что нет открытых и закрывающих php-тегов.
Поэтому я добавляю их … Annnd … Страница с синтаксическими ошибками снова!
Поэтому мой вопрос таков:
Могли ли некоторые из вас поделиться некоторыми знаниями и объяснить мне, как этот процесс действительно работает. В чем дело со всеми синтаксическими ошибками и как вы должны заниматься такой задачей?
Я считаю, что это возможно, и да, было бы предельно легче, если бы я не выводил весь html через php. Но это простой пример, и мой фактический дизайн намного сложнее. Это требует, чтобы различные части страницы были разбиты на переменные, чтобы поместить эти биты и пики, когда это необходимо, динамически.
Любые ввод, предложения или понимание будут оценены с большой благодарностью; и любые ссылки на страницы или учебные пособия, которые охватывают это, также будут высоко оценены.
Спасибо!!
Все, что вам нужно сделать, чтобы использовать jQuery с PHP, – это включить javascript-файл jQuery в ваш HTML-документ в теге head. Я все время использую PHP вместе с jQuery. И вот как я это делаю. В вашем коде выше, похоже, что у вас есть некоторые проблемы с вашим кодом. И также похоже, что вы хотите сохранить заголовок страницы в переменной PHP, а затем распечатать ее. Тебе не обязательно все это делать. Просто поместите простой текст в свой PHP-файл без каких-либо php-тегов, и он будет работать. Кроме того, вы используете старую версию jQuery. Возможно, следует использовать последнюю версию. Но, если вам нужно, он хранится в переменной PHP, чтобы вы могли распечатать ее, выполните следующее:
Итак, вот какой код, чтобы вы начали.
<?php $pageStart = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>MY WEBSITE PAGE</title> <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.min.js"></script> <script type="text/javascript"> $(document).ready(function(e) { $("#date").datepicker(); }); </script> </head> <body> <input type="text" id="date" name="date" /> </body> </html>'; print $pageStart; ?>
<head> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { // javascript & jquery code // even better would be if you would put client code in separate file!!! }); </script> </head> <body> <?php echo "bla bla bla"; ?> </body>
и +1111 к комментарию Херы. Вам не хватает основ.
Используйте Heredoc . Тысячи синтаксических ошибок исчезнут.
Смотрите версию heredoc ваших страниц,
include
для связи. include
не возвращает ничего. Это просто включает. Так изменилось по-другому. Я думаю, это должно быть
. (include ($_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php')) .
иначе php попытается включить все данные после того, как будет достигнут l (теги будут интерпретироваться как часть имени файла).
также, с точки зрения PHP-кода, после включения файла (при успешном завершении) оператор include преобразуется в 1 как число, а не в содержимое файла.
использование
<? $abc <<<qwerty ... ... ... qwerty; return qwerty; ?>
для всех файлов, которые вы хотите включить