我有一个基于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"更改为"s",反之亦然,直到错误消失。这也失败了,因为脚本似乎不会以这种方式验证。
所以我读了一些教程,发现了这个:
JavaScript和PHP都可能为任何Web开发工作带来巨大的潜力,但它们并没有;Don’我不总是在一起玩得很好。阅读有关问题的信息。
我的理解是,你需要包含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>
现在两个页面都没有语法错误,太好了。。。所以我尝试了一下,有点期待事情最终会成功。。。
不。。。致命错误:无法打开流:没有这样的文件或目录等等。这个错误与我添加的include有关。所以,好吧,即使文件在那里,它也不会被验证为php,因为没有打开和关闭php标记。
所以我加上它们。。。Annnd。。。又是一个充满语法错误的页面!
所以我的问题是:
请一些人分享一些知识,并向我大致解释这个过程的实际工作原理。所有的语法错误是怎么回事?你应该如何完成这样的任务?
我相信这是可能的,是的,如果我不通过php输出整个html,这会更容易。但这是一个简单的例子,而我的实际设计要复杂得多。它要求将页面的不同部分分解为变量,以便在需要时动态地放置这些位和位。
任何意见、建议或见解都将不胜感激;任何涉及这方面的页面或教程的链接也将不胜感激。
谢谢!!
在PHP中使用jQuery所需要做的就是在head标记中的HTML文档中包含jQuery javascript文件。实际上,我一直在使用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到@Heera的评论你错过了基础知识。
使用Heredoc。成千上万的语法错误将消失。
请参阅页面的heredoc版本,
- http://pastie.org/3412925
- http://pastie.org/3412929
- 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;
?>
对于要包含的所有文件