用Ajax调用函数? - php

我想实现的目标
我想展示一些作品。所以,我有这些的缩略图。当访客单击缩略图时,我希望打开一个div(称为slickbox)并显示标题,说明和有关所单击作品的滑块。

我已经做了什么以及如何
我从数据库中获取工作数据。这是我的作品清单的一小部分:

index.php

<?php
  $retour_messages = mysql_query('SELECT 2K13_works.*, 2K13_categories.nom AS nomCAT FROM 2K13_works, 2K13_categories WHERE 2K13_works.cat_id = 2K13_categories.cat_id ORDER BY 2K13_works.record_date DESC') or die(mysql_error());//requete sql pour récupérer les works de la page
  ?>
  <ul id = "creations" class = "step">
    <?php
  while($donnees_messages=mysql_fetch_assoc($retour_messages)){
  echo '<li class = "step '.$donnees_messages['nomCAT'].'" id="'.$donnees_messages['work_id'].'">
               <div class = "item"><a href = "#"><img src = "'.$donnees_messages['thumbLink'].'" alt = "'.$donnees_messages['titre'].'" title = "" width = "226" height = "147"/></a>
                <div class = "caption">
                  <h3>'.$donnees_messages['titre'].'</h3>
                  <p>'.html_entity_decode($donnees_messages['resume'],ENT_QUOTES,'UTF-8').'</p>
                  <p id = "desc" class = "hidden">'.html_entity_decode($donnees_messages['description'],ENT_QUOTES,'UTF-8').'</p>
                  <!--<p id = "idw" class = "hidden">'.$donnees_messages['work_id'].'</p>-->
                </div>
              </div>
            </li>';
            }
 ?>
  </ul>

如您所见,我有一个ul标签,其中每个作品都包含li标签。每个li标签获取数据库中工作的ID,每个li标签包含h3标签和p标签,这些标签包含我想在滑动框中显示的文本(有关图像,我将在后面看到)。

现在,我的滑动框JavaScript代码出现和消失:

front_functions.js

//_____________SLICKBOX__________________________________
$('#slickbox').hide();
$("#creations li").click(function(e) {
    // shows the slickbox on clicking the noted link
    $titre = $(e.target).children("h3").text();
    $bla = $(e.target).children("#hidden").text();
    $("#description").children("h1").text($titre) ;
    $("#description").children("p").text($bla); 
      $('#slickbox').slideDown();
      e.preventDefault();
      $(e.target).empty();
      //return false;
});

此代码无法正常工作,因为我的滑动框已在工作之前加载。这就是为什么我需要Ajax和发送和执行请求的异步方式的原因。

我在这里阅读此示例代码:which is quite helpful。
但是,我有一个问题:我正在使用jQuery,并且我想使用$.ajax()。我只是真的不知道该怎么做。

我是否必须设置XHMLHTTPRequest对象?在哪里可以编写Ajax调用?我可以调用函数而不是URL吗?

喜欢做(我不知道):

$(#creations li).click(function(e){
        $.ajax(){
           function : "displayContent(id,desc,title)",
        }
}
function displayContent(id,desc,title){
    $(#slickBox).children("h1").innerHTML(title);
    $(#slickBox).children("p").innerHTML(desc);
    $(#slickBox).show();
}

我什至不知道我是否应该使用JSON(但是,因为我的数据已经存储,并且我只想显示它们,所以我认为不需要Json)。

请给我您的见解和高级建议。

参考方案

当您发送服务器请求(使用ajax)时,就像您在page中提交表单一样。
因此,提交表单时,您可以使用php进行的所有操作,也可以使用ajax进行。
例如,如果您想使用ajax在php中调用函数,只需向php发送一个参数,如下所示:

$.ajax({  
  type:'POST',
  data:{
     param:'Hey_php_call_this_function' 
  },
  success:function(data){
     alert('hey jquery , php said : ' + data);
  }
});

在服务器端:

if(isset($_POST['param']) && $_POST['param'] == 'Hey_php_call_this_function'){
    echo call_a_function();  /// "output to callback success function"  = data
}

希望对您有所帮助。

CodeIgniter更新查询被执行两次 - php

我正在使用CodeIgniter 2.2。每次访问页面时,我都必须用+1更新数据库。代码可以工作,但是每次都会增加+2。示例:如果是total views=2,则在单击页面后total views应该是3,但是数据库中的值是4。我确定我在控制器中仅调用一次模型add_one_to_view_image。控制者 function view(){ $view_i…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

通过php表单修改我的xml文件 - php

这是我的xml文件和下面的php代码。我输入了一个输入类型,它将按名字搜索学生。然后将显示有关特定学生的信息,并且将显示另一个按钮更新。问题是我想在那之后修改信息。如何通过标签名称获取元素,以便可以修改有关特定学生的信息?<students> <student> <firstname>John</firstname&…

如何从php中获取datatables jQuery插件的json数据 - php

我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…

使用PHP包含时的淡入淡出过渡 - php

我正在尝试使用jQuery或CSS(或其他方式!)在DIV中包含的php页面上创建淡入淡出或滑动过渡。我四处搜寻,发现了很多淡入淡出过渡的示例,这些实例彼此淡入淡出div或隐藏内容淡入淡出,但是这种情况略有不同。我有一个DIV,其内容由导航栏控制。选中后,每个页面都可以使用PHP成功地包含在div中,但我想使内容淡入和淡出。关于如何在页面更改之间进行漂亮过渡…