通过get获取fancybox内的动态内容

时间:2011-06-02 10:04:31

标签: php jquery fancybox

我有多个fancybox实例同时工作:

<a class="grupito" href="?id=1#various1">Group 1</a>
<a class="grupito" href="?id=2#various1">Group 2</a>
<a class="grupito" href="?id=3#various1">Group 3</a>

显示以下div:

<div style="display: none;">
   <div id="various1">
       //Select that shows the people from the group here depending on the id 
       //of the link with a $_GET['id'] variable (from database)
   </div>
</div>

通过此电话:

$("a.grupito").fancybox({
            'titlePosition'     : 'inside',
            'transitionIn'      : 'none',
            'transitionOut'     : 'none'
        });
});

这对我不起作用。 Fancybox说:“无法加载请求的内容。 请稍后再试。“。如果我摆脱了href的?id = 1部分,它会出现,但它不会有我需要的内容。这是我用fancybox尝试的吗?< / p> 编辑:事实上,用firebug检查它我发现我收到404错误。任何人都可以指出我正确的方向,看看我如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

我正在寻找解决方案,但找不到一个。

我正在创建一个待办事项列表,当您点击编辑时,会弹出fancybox,其中包含用于编辑每个待办事项的字段。

我最终找到了一种非常简单的方法。

以下是我编辑项目的链接:

<div class='edit' id='$id'>
    <a href='#editItem-$id' class='editLink'>edit</a>
</div>

仔细查看:#editItem-$id

然后这是我正在加载的内容。

$getItemId = mysql_query("SELECT * FROM the_items");
$num_rows = mysql_num_rows($getItemId);

while($row = mysql_fetch_array($getItemId)) {
$this_is_the_id= $row['this_is_the_id'];
$this_is_the_title= $row['this_is_the_title'];
$iteminfo= $row['iteminfo'];
$highlow= $row['highlow'];
$whoto= $row['whoto'];
$finished= $row['finished'];
$date= $row['date'];

    echo "<div style='display: none'>
              <div id='editItem-$id'>
                  <div class='item'>
                      <div class='itembg'>
                          <div class='title'>
                              <input type='text' id='title' name='title' value='$this_is_the_title' />
                          </div>
                          <div class='controls'>
                              <div class='edit' id='$id'>
                                  <a href='#editItem-$id'>edit</a>
                              </div> 
                              <div class='delete' id='$id'>
                                  <a href='?act=delete&id=$id'>delete</a>
                              </div>
                          </div>
                          <div class='item_desc' style='margin-top: 10px;'>
                              <div class='description'>
                                  <textarea id='description'>$iteminfo</textarea>
                              </div>
                          </div>
                      </div>
                  </div>
              </div>
          </div>";

再次,看看这里:editItem-$id在div上。

出于安全考虑,我删除了正确的信息。

但是,这会引入我想要的内容,因为它们每个都有来自数据库的个人和唯一ID。

答案 1 :(得分:1)

如果我理解您的问题,我认为您可能需要重新考虑您的方法。我不确定你想要通过向你的锚添加?id = 1来实现什么。 Fancybox显示已在页面上加载的内容。一旦HTML页面被渲染并发送到浏览器,PHP就不会对客户端发生的事情发挥作用。

您需要在页面加载时呈现每个框的所有内容,然后在内部链接中引用它们,如下所示。 Fancybox只处理已加载到页面上的内容,因此您需要在初始渲染过程中找出每个框的内容。

<a class="grupito" href="#various1">Group 1</a>
<a class="grupito" href="#various2">Group 2</a>
<a class="grupito" href="#various3">Group 3</a>

<div style="display: none;">
   <div id="various1">
       //The content from group 1
   </div>
   <div id="various2">
       //The content from group 2
   </div>
   <div id="various3">
       //The content from group 3
   </div>
</div>

答案 2 :(得分:0)

您可以使用jquery.load()向服务器发出请求,并将该内容动态加载到一个fancybox div中。