我是编程的新手,试图制作简单的cms:
index.php显示所有文章主题,
用户点击主题以在Fancybox中显示内容,而不是转发到新页面。
我使PHP代码有效(但是它转发到新页面),并且测试https://stackoverflow.com/a/7844043/1775888(这可以在地址栏中创建Fancybox内容自己的URL)也可以。
我无法想出如何将它们结合起来?
我之前尝试过:在PHP中更改href,单击主题$ _GET [id]而不是isset然后无法获取查询..
任何建议我真的很感谢你抽出时间。
PHP(index.php)
if(isset($_GET[id])){
$id=mysql_real_escape_string($_GET["id"]);
$sql="select * from $table where id='$id'";
$query=mysql_query($sql) or die(mysql_error());
while($list=mysql_fetch_array($query)){
print"
<div class=\"contentwrap\" align=\"center\">
<div class=\"content\">\"$list[content]\"</div>
</div>
";
}
}
else{
$sql="select * from $table order by id desc";
$query=mysql_query($sql) or die(mysql_error());
while($list=mysql_fetch_array($query)){
print"
<div class=\"subjectwrap\" align=\"center\">
<div class=\"subject\"><a href=\"index.php?id=$list[id]\">$list[subject]</a></div>
</div>
";
}
}
jQuery(来自https://stackoverflow.com/a/7844043/1775888)
function showfancybox(id) {
switch(id) {
case '#_name':
$(id).show();
$.fancybox({
href: id,
type:'inline',
onClosed: function() {
$(id).hide();
}
});
break;
}
}
showfancybox(location.hash);
$('a.flink').click(function(e){
showfancybox($(this).attr('href'));
});
编辑:
我改变代码让$ list [content]加载并显示:none
进入index.php,获取消息:无法加载请求的内容。请稍后再试。
<?php
$sql="select * from $table order by id desc";
$query=mysql_query($sql) or die(mysql_error());
while($list=mysql_fetch_array($query)){
print"
<div class=\"subjectwrap\">
<div class=\"subject\"><a class=\"flink\" href=\"#$list[id]\">$list[subject]</a></div>
</div>
";
print"
<div class=\"atc\" id=\"$list[id]\">
<div class=\"contentwrap\" align=\"center\">
<div class=\"content\">\"$list[content]\"</div>
</div>
</div>
";
}
?>
<script type="text/javascript">
$(function(){
function showfancybox(id) {
switch(id) {
case '<?php "#$list[id]" ?>':
$(id).show();
$.fancybox({
href: id,
type:'inline',
onClosed: function() {
$(id).hide();
}
});
break;
}
}
showfancybox(location.hash);
$('a.flink').click(function(e){
showfancybox($(this).attr('href')); //make href to id
});
});
</script>
答案 0 :(得分:0)
尝试调用e.preventDefault();在您调用其他功能之前的Click事件中,并且a标签未分配您在选择器中使用的flink类
也在你的get ['id']上调用intval()而不是escape_string,
答案 1 :(得分:0)
对不起,但我不回答你的问题。你的代码似乎都错了。
例如,你甚至知道为什么你有这条线? -
case '<?php "#$list[id]" ?>':
您认为它是什么?您认为它如何执行?这是JavaScript循环中的JavaScript片段吗?如果是,那么您将获得具有相同名称的多个函数。
除此之外,如果您的目标是基于url哈希打开/关闭fancyBox,那么我建议使用(很快将公开发布)历史帮助器,请参阅此示例 - http://jsfiddle.net/FB7UW/show/light/(http:// jsfiddle达网络/ FB7UW /)