我正在尝试在html中显示数据库表。我有以下PHP代码将获取表并以html表格式返回它没有错误:
function viewPlane()
{
if(!$this->DBLogin())
{
$this->HandleError("Database login failed!");
return false;
}
$qry = "select * from airplane";
$result = mysql_query($qry,$this->connection);
echo "<table border='1'>
<tr>
<th>Registration Number</th>
<th>Model Number</th>
</tr>";
while($row=mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['Registration_Number'] . "</td>";
echo "<td>" . $row['Model_Number'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
在html文件中,我有以下调用php函数的javascript代码,并假设将其添加到div:
<script type="text/javascript">
$(document).ready(function(){
$("#menu_active").click(function(){
$("#table").after('<?php $test->viewplane(); ?>')
});
});
</script>
代码:
<?php $test->viewplane(); ?>
在放入html中时起作用,为什么不起作用?
答案 0 :(得分:0)
可能存在其他问题(如果您查看生成的JavaScript和JavaScript错误控制台会有帮助),但至少,这个:
<table border='1'>
<tr>
...包含'
个字符,这些字符无法在用'
个字符分隔的JavaScript字符串文字中使用,并且不能在任何JavaScript字符串文字中使用未换行的新行字符。
您需要添加一些\
,或者可能切换到使用json_encode
函数,而不是手动构建字符串文字。
答案 1 :(得分:0)
我认为写$("#table").after('<?php $test->viewplane(); ?>')
是不正确的
javascript在浏览器中执行,因此在js执行过程中,它只是将<?php $test->viewplane(); ?>
视为一个简单的字符串。
我的意思是当你点击"#menu_active"
时,会调用after方法,但是after方法不负责向服务器端发送http请求以获取内容。
要实现您的目标,单击"#menu_active"
时可能需要进行Ajax调用。
像$("selector here").load
方法之类的东西会有所帮助。
答案 2 :(得分:0)
我没有在代码中看到一个id为table的表(#table)
:
$("#table").after('<?php $test->viewplane(); ?>')
如果选择器在jQuery中不起作用,那就没有错误它只是没有做任何事情。
此外,这可能与此无关,但有时候PHP doesn't evaluate variables contained inside of single quotes。不确定HTML内部是否重要。