【发布时间】:2019-09-10 15:45:44
【问题描述】:
我有三个 PHP 页面 index.php、fetch_data.php 和 product_detail.php。
我的 index.php 有三栏:过滤选项、产品面板、详细说明。
当用户点击产品面板中的产品时,详细描述应该加载product_detail.php。
当我在 fetch_data 中有 target="_blank" 时,它可以工作并显示产品详细信息,但我不希望它显示在新窗口中。 index.php 中的所有内容都必须位于同一页面上。我需要它来工作:onclick="loadQueryResults()"。我认为的问题是,如果在 index.php 中声明,我不确定该方法是否可以在 product_detail.php 中访问。
我尝试使用 javascript 将 product_detail.php 加载到 index.php 的 div 中,但它没有引用行的 id。
<!-- index.php =============================-->
<div class="col-md-6">
<br />
<div class="row filter_data"></div><!--Contains output of filtered data-->
</div>
<div class="col-md-4">
<br />
<h4>Product Detail</h4>
<script type="text/javascript">
function loadQueryResults()
{
$('#DisplayDiv').load("product_detail.php?id=<?PHP $row['id'] ?>");
return false;
}
</script>
<div id="DisplayDiv" >
<!-- This is where product_detail.php should be inserted -->
</div>
</div>
//fetch_data.php=================================
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$total_row = $statement->rowCount();
$output = '';
if($total_row > 0)
{
foreach($result as $row)
{
$GLOBALS['id'] = $row['id'];
$output .= '
<div class="col-sm-4 col-lg-8 col-md-8">
<div style="border:1px solid #ccc; border-radius:5px; padding:10px; margin-bottom:10px; height:300px;">
<p align="center">
<strong><button type="button" onclick="loadQueryResults()" >'. $row['company'] .'</button>'. $row['company'] .'</strong></p>
ID : '. $row['id'].'<br />
Detail : <br />'. $row['detail'] .' <br /><br />
</p>
</div>
</div>
';
}
}
//product_detail.php=====================================
$connect = new mysqli($host, $dbUsername, $dbPassword, $dbname);
if (mysqli_connect_error()) {
die('Connect Error('. mysqli_connect_errno().')'. mysqli_connect_error());
} else {
$id = $_GET['id'];
$id = mysqli_real_escape_string($connect,$id);
$query = "SELECT * FROM `db` WHERE `id`='" . $id . "'";
$result = mysqli_query($connect,$query);
while($row = mysqli_fetch_array($result)) {
echo "<br/><br/>";
echo "Company: <b>" .$row['company']. "</b>";
echo "Detail: <b>" .$row['detail']. "</b>";
}}
如何让product_detail 显示在index.php 页面的DisplayDiv 中?
【问题讨论】:
-
没有任何东西调用你的
loadQueryResults()函数... -
了解 AJAX,这是如何在不导航到其他页面的情况下更改页面内容的基本方法。 en.wikipedia.org/wiki/Ajax_(programming)
-
@David 我试图将其称为 onclick="loadQueryResults()" 但没有用,并且不知道如何从 fetch_data.php 调用它..
-
@ian:不在您向我们展示的代码中,您没有。或者,如果您使用过去时表示您已删除该尝试,那么这仍然可以解释为什么它不起作用......如果没有调用它,该函数将不会执行。
-
@David True。我现在已经编辑了它。谢谢。
标签: javascript php jquery mysql ajax