PHP + JQuery – Как использовать эти два вместе? См. Мой пример

У меня есть веб-сайт на основе 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 ваших страниц,

  1. http://pastie.org/3412925
  2. http://pastie.org/3412929
  3. http://pastie.org/3412935 // Здесь вы использовали include для связи. include не возвращает ничего. Это просто включает. Так изменилось по-другому.

Я думаю, это должно быть

 . (include ($_SERVER['DOCUMENT_ROOT'] . '/../../path/to/include/datepicker.php')) . 

иначе php попытается включить все данные после того, как будет достигнут l (теги будут интерпретироваться как часть имени файла).

также, с точки зрения PHP-кода, после включения файла (при успешном завершении) оператор include преобразуется в 1 как число, а не в содержимое файла.

использование

 <? $abc <<<qwerty ... ... ... qwerty; return qwerty; ?> 

для всех файлов, которые вы хотите включить