PHP include和jQuery.load()

PHP include和jQuery.load(),php,jquery,Php,Jquery,我有一个php页面,它显示了一系列的产品,左边是一组过滤器(例如颜色、大小、样式)。我最初使用它是为了当您选择一个过滤器(例如绿色)时,它将使用GET方法发布表单,并使用过滤结果刷新页面。我现在正在更改它,这样它将只刷新产品内容,而不是整个页面本身,我正在使用jQuery来完成这项工作 当用户在未选择过滤器的情况下访问页面时,会使用PHP include显示初始结果: <div id="products"> <?php include('products.php') ?

我有一个php页面,它显示了一系列的产品,左边是一组过滤器(例如颜色、大小、样式)。我最初使用它是为了当您选择一个过滤器(例如绿色)时,它将使用GET方法发布表单,并使用过滤结果刷新页面。我现在正在更改它,这样它将只刷新产品内容,而不是整个页面本身,我正在使用jQuery来完成这项工作

当用户在未选择过滤器的情况下访问页面时,会使用PHP include显示初始结果:

<div id="products">
    <?php include('products.php') ?>
</div>
当它刷新products div时,它会很好地处理PHP代码,并且只显示绿色产品

但是,它仍然在过滤结果下运行PHP include,这意味着我会显示过滤结果,然后在下面显示PHP include结果,我不知道为什么

我必须首先包含PHP,这样如果搜索引擎按页面索引,它将看到内容,因为搜索引擎不会执行JavaScript(请参阅答案)

编辑 这是我的密码

shop.php

<form id="filterproducts" action="" method="get">
  <div id="filters">
    <p>Colour</p>
    <input type="checkbox" name="colour" value="red" /> Red
    <input type="checkbox" name="colour" value="blue" /> Blue
    <input type="checkbox" name="colour" value="green" /> Green
    <input type="checkbox" name="colour" value="yellow" /> Yellow
    <input type="hidden" name="colours" value="" />
  </div>
</form>
<div id="products">
  <?php include("products.php"); ?>
</div>
<script>
  $(':checkbox').change(function() {
    var colour = $(this).val();
    $("#products").load("products.php?colour="+colour);
  });
</script>

当我点击一个过滤器时,.load()将替换为.load()中的任何内容,所以我知道这一点是有效的,它只是没有删除php包含内容…

我会这样做:

<div>
<?php 
if(isset($_GET['Filter']))
{
    echo $resultWithFilter;
}
else
{
    echo $resultNoFilter;
}
?>
</div>


你没有提供太多的代码,所以很难知道这是否可行,但也许你可以在代码的另一部分使用这个想法。

我已经找到了它不起作用的原因。。。我正在关闭一个尚未打开的分区!!!我现在觉得自己很愚蠢,但这表明HTML必须有效才能正常工作:)


谢谢大家的帮助

你的JavaScript代码是什么?听起来好像每次过滤器更改时整个页面都在刷新,导致PHP
include
再次运行。@MichaelIrigoyen我不认为它在刷新整个页面,因为我的URL从shop.PHP中从未更改过(即使我的表单是GET,也没有向URL添加任何查询字符串).我刚刚注意到我把它加错了,这是我自己在stackoverflow上的一个打字错误!哎呀。。。我刚刚更正了它,而不是使用两个方法来加载一个可以处理不同结果集的方法。你可以使用.load(“products.php”)加载两个方法,但是你可以测试你是否有任何$\u GET[],如果没有显示所有内容。对不起,我现在已经将代码添加到我的帖子中,这样你就可以看到我在尝试做什么了-这是基本的,但这是我从代码开始的方式@Sebastien根据我发布的关于搜索引擎不执行jquery的链接,我认为我无法在.load()中完成这一切
<?php
$sql = "SELECT id, productname, productprice FROM products";
if (isset($_GET['colour']) && $_GET['colour'] != "") {
  $colour = $_GET['colour'];
  $sql .= " WHERE colour = '$colour'";
}
$sql .= " ORDER BY productprice LIMIT 10";
$result = mysql_query($sql,$link);
if (mysql_num_row($result) > 0) {
  while($line = mysql_fetch_assoc($result) {
    extract($line); 
?>
<div id="product-<?php print $id ?>">
  <p>
    <a href="http://www.myshopsite.com/product/product-<?php print $id ?>" title="<?php print $productname ?>">
      <img src="/images/product-<?php print $id ?>" alt="<?php print $productname ?>" />
      <br />
      <?php print $productname ?>
      <br />
      <?php print $productprice ?>
    </a>
  </p>
</div>
<?php 
  } 
} else { ?>
<p>Sorry, there are no products to show</p>
<?php } ?>
<div id="products">
  <p>This is some test text</p>
</div>
<div>
<?php 
if(isset($_GET['Filter']))
{
    echo $resultWithFilter;
}
else
{
    echo $resultNoFilter;
}
?>
</div>