2012-03-26 56 views
0

最后通过一个疯狂的猴子算出它,但忘记了SQL查询的$ eventDate变量的引号。感谢您的帮助球员:)如何判断要显示哪个JQUERY弹出框

$(".date_has_event").live("click",function(){ 
    console.log('you clicked', this); 

    var dateClicked = $(this).attr('id'); 
    $.ajax({ 
      type:"GET", 
     url: "popup_events.php", 
     data:"date="+dateClicked, 
     success: function(data){ 
      $(".popupContent").html(data); 
     }}); 
     //centering with css 
     centerPopup(); 
     //load popup 
     loadPopup(); 

    }); 

这一点与我的popup_events.php文件:“这是可能的”

<?php 

    include ("Includes/dbConnect.php"); 

    $eventDate = $_GET['date']; 

    $query = "SELECT * FROM events WHERE eventDate='$eventDate'"; 
    $check = mysqli_query($cxn,$query) or die("Couldn't execute query!"); 

    while($row = mysqli_fetch_array($check)) 
     { 
      $id = $row['eventID']; 

      echo "<div class='submit_event_list'><a href='individual_event_page_main.php?id=$id'>"; 
      echo $row['eventName']; 
      echo " | " . $row['host']; 
      echo " | " . $row['venue']; 
      echo " | " . $row['eventDate']; 


      echo "</a></div>"; 
      echo "<br />"; 
     }  
?> 

回答

0

我不知道你实际上有一个问题... 但好像你可能只需要对如何判断弹出显示一些帮助。

在:

$(".popup").live("click",function(){}) 

,你可以使用特殊的“这个”变量来确定你一天的的被点击。

例如。

$(".popup").live("click",function(){ 
    console.log('you clicked', this); 

    //to get the date id (your formatdate) from this 
    var dateClicked = $(this).parent().parent().attr('id'); 

    //have to do parent() twice because you put your .popup under <div class='title'> 
}) 

为了使它更容易..你应该考虑改变你的点击事件使用.date_has_event而不是。弹出所以你可以这样做,而不是:

$(".date_has_event").live("click",function(){ 
    var dateClicked = $(this).attr('id'); 
}) 

一旦你知道你点击了哪个一天,你可能想使当天的弹出窗口的内容在弹出窗口(当天的活动列表)。

这就是你应该使用ajax请求发送到一些后端代码,这基本上是你已经推到你的(在你的#popupContact下的东西)后面的PHP代码。 您应该将该代码移出某个地方..例如说“getEvents.php”

例如,

$(".date_has_event").live("click",function(){ 
    var dateClicked = $(this).attr('id'); 
    $.ajax({ 
     type: "GET", 
     url: "getEvents.php", 
     dataType: "json", 
     data: "date="+dateClicked, 
     success: function(data){ 
      //fill your popup with the data received 

     } 
    }) 
}) 

我认为这应该足以让你在路上。 祝你好运。

+0

谢谢猴子认为这将是一个很大的帮助,只是一个问题。如何将结果转换成JSON,然后将JSON数组转换回HTML以插入DIV? – rudawg 2012-03-26 11:19:45

+0

你不必为你的ajax请求使用“json”。它可以返回直接的HTML(这应该会更容易)。 只需将$ .ajax()请求的数据类型更改为“html”,然后在您的成功函数(数据)中,'数据'将只是您的直接HTML代码..所以您可以只做$('#popup') .html(data) 否则..你必须通过json对象并将它们转换为html。所以你的成功函数应该是这样的: for(var i in data){html + ='

  • Event:'+ data [i] +'
  • '} – 2012-03-27 00:38:24

    1

    如果问题是答案是肯定的。当然,您可以将事件绑定到HTML,并显示一个弹出窗口。人们一直这样做,所以这不是一个真正有价值的问题!

    更广泛的问题是“我是否以良好的方式做这件事?”是一个更难以回答的问题,也延伸了一个“适当的”堆栈溢出问题的局限性,这个问题应该比这个更集中。

    我说“拥有它!”安全地知道你可以添加弹出窗口。当你有更具体的问题时再回来。当你开始时我会考虑的事情:

    1. JavaScript是动态生成日历的最佳方式吗?你是否使用服务器端语言?这可能是更好的地方。如果你使用JS,为什么不完全建立日历,然后返回并填充它?

    2. 你需要让你的ajax调用同步吗?有没有办法设计它,以便它能够愉快地获取新信息,而不用担心它是否按顺序返回? (提示,这可能涉及到#1)

    3. 信息moreo提示:live()是一个不推荐使用的函数。从jQuery 1.7开始,我会考虑使用.on()来代替。有一个.live()使用.on(),但我认为你不应该使用它......你应该使用相当于.delegate(),因为你应该有一个你的日历的祖先可以作为一个监听器(而不是整个文档!)。 。如果您使用的是jQuery 1.5.x或1.6.x,则使用.delegate()。如果你看过UI框架已经包括日历和弹出窗口(他们不包括事件管理,所以你仍然有一些有趣的工作要做)?????????????????????????????????

    +0

    对不起,“这是可能的吗?”问题,我只是有点失落,并已用完选项,我的问题应该是如何生成与数据库中的事件日期弹出窗口,道歉。 – rudawg 2012-03-26 10:46:46

    +0

    1.我现在没有时间参与其他人开始的项目,所以目前我没有太多选择。 2.不,虽然我不太确定这将如何帮助我? 3.谢谢你,我会研究并改变它:) 4.我再次承受着时间的压力,需要在网站上做很多其他事情。理想情况下,我会是的,我将在未来这样做,感谢您的帮助,它非常有用:) – rudawg 2012-03-26 10:55:16