【问题标题】:accordion won't work with new content loaded手风琴不适用于加载的新内容
【发布时间】:2014-04-29 09:09:59
【问题描述】:

我已经尝试让它工作一段时间了。

当我将新的 Ajax 内容加载到手风琴时,新内容将不起作用。预加载的内容在之前和之后都可以正常工作。 我已经添加了我的代码here 我知道你不能用 ajax 运行脚本,因为我的配置和 mysql 在本地运行。

这是我的"update-data.php"

<?php
include('../../includes/config.inc.php');
if(isSet($_POST['content']))
{
$content=$_POST['content'];
$name=$_POST['name'];

$query = "INSERT INTO messages(msg,name) VALUES ('$content','$name')";
mysqli_query($sqlCon, $query);

//mysqli_query("insert into messages(msg) values ('$content')");
$sql_in= mysqli_query($sqlCon, "SELECT msg,msg_id,name FROM messages order by msg_id desc");
$r=mysqli_fetch_array($sql_in);
$msg=$r['msg'];
$name=$r['name'];
$msg_id=$r['msg_id'];
}

?>
<div class="accordionButton"><?php echo $msg_id; ?>:<?php echo $name; ?></div>
<div class="accordionContent" style="display: block;"><?php echo $msg; ?></div>

感谢您的帮助

这里是ajax调用:

<script type="text/javascript">
$(function() {
    $(".comment_button").click(function() 
    {
    var element = $(this);
    var boxval = $("#content").val();
    var bval = $("#name").val();
    var dataString = {content:boxval,name:bval};

    if(boxval=='')
    {
    alert("Please Enter Some Text");
    } else {
    $("#flash").show();
    $("#flash").fadeIn(400).html('<img src="ajax.gif" align="absmiddle">&nbsp;<span class="loading">Loading Update...</span>');

    $.ajax({
        type: "POST",
        url: "<?php echo $total_path.'/update_data.php'; ?>",
        data: dataString,
        cache: false,
        success: function(html){

        $("div#wrapper_ac").prepend(html);
        $("div#wrapper_ac .accordionButton:first").slideDown("slow");
        document.getElementById('content').value='';
        document.getElementById('name').value='';
        $("#flash").hide();
        }
    });
    }
return false;
});
</script>

【问题讨论】:

  • ajax 调用在哪里?
  • 提供您的 javascript 代码,因为这似乎是一个 JS 问题
  • jsfiddle.net/p3n5u/1我刚刚更新了jsfiddle
  • 它们是否被添加到您的数据库中?您是否在更新文件中回显您的查询并查看它是否发布正确?这不是... VALUES ('".$content."','".$name."')"; 还是我错了?
  • @Dorvalla 他正在使用数据库结果来输出新数据,并将其添加到 DOM 中,只是 javascript 不起作用。我认为这是由于听众的问题。

标签: javascript php jquery ajax


【解决方案1】:

您的 php 很好,只需清理您的输入 并查看 PDO

您可以阅读有关清洁输入 here 和 PDO here

在你的 js 中,我认为你的问题是你的 on 声明

 $('.accordionButton').on('click', function() {
    // DO stuff
 }); 

我认为它只是没有将 DOM 冒泡到足以捕获新数据的程度,而是将他的点击事件添加到所有手风琴按钮上并监听它们。

改成这个

 $('#wrapper_ac').on('click', '.accordionButton', function() {
    // DO stuff
 }); 

这会将侦听器置于#wrapper_ac 上,因此将捕获下面发生的任何点击事件。

希望对你有帮助

编辑:有关 PDO 的更多信息,请查看此站点 http://www.phptherightway.com/#databases

【讨论】:

  • 成功了!谢谢。关于 PDO 我不确定我是否理解?我很新;)
  • 我已经编辑了我的答案并在底部添加了另一个链接,这是对 PDO 的一个很好的介绍,并解释了你为什么要使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多