0

这是一个巨大的问题,会花时间阅读。对此很抱歉,但是,我是一个新的 Web 开发人员,我真的需要帮助,我认为这只是 1-2 行的问题,这就是为什么我问你并希望你能在几分钟内解决它. 如果它不是那么容易,没问题,我准备好处理它。

看看这段代码:

<?php
foreach($array as $value)
       {
?>
           <div>
               <div class="topic" onclick="showDetails()">
                   <h2>Topic</h2>
               </div>
               <div class="details">
                   <div>
                     <input type="text" name="comment" id="comment" onkeypress="showUser()" />
                   </div>
               </div>
           </div>
<?php
       }
?>

在这里,你可以看到,会有一些<div>元素,每个元素都有自己的内容(“topic” div,“details” div),我们不知道这个<div>项目会有多少,因为foreach循环。我想要这样,首先所有的“细节” div 都将被隐藏。当我单击一个主题时,将显示其以下(对应的)“详细信息” div。为此,我使用showDetails()函数。这是功能:

<script>
    $(document).ready(function(){
         $(".details").hide();
    }
    function showDetails()
    {
        $(this).(".details").show();
    }
</script>

我知道为什么它不起作用,我无法正确检测到“详细信息”div。你能告诉我该怎么做吗?

所以,这是我的第一个问题。我的第二个问题是:

在“详细信息” div 中,有一个输入框(<input type="text" />)。我希望我的用户能够在那里输入,并在存储到数据库后显示。它就像 Facebook 的评论功能,我们对帖子发表评论,它会在几秒钟内存储并显示给我们,而无需重新加载整个页面。showUser()旨在做到这一点。我对该showUser()功能的尝试:

<script type="text/javascript">
    function showUser()
    {
        $(this).keypress(function(e){
           if(e.which && e.which==13)
             {
                 $.post("<?php echo base_url();?>help/comment",
                 {
                     q:this.value
                 })
             }
           else
                    {

                    }
        });
    }
</script>

它是一个 Code Igniter 项目,所以“帮助”是一个“控制器”,而“评论”是该控制器中的一个函数。这是comment()功能:

public function comment()
{
    $this->load->model('model');

    $topic=array();
    $topic['user_id']=1;
    $topic['topic_id']=1;
    $topic['comment']=$_POST["q"];

    $this->model->comment($topic);
}

此代码未将用户的评论保存在数据库中。

感谢您提出这个大问题!

4

1 回答 1

0

你的问题有点太大了,可能应该分成两个单独的主题。

简要地,

1) 要将两个 div 链接在一起,您需要动态创建单独的 id。前任:

foreach($array as $key=>$value)

然后

<div id="topic_<?= $key ?>"  data-id="<?= $key ?>"

在您的详细信息部分中也是如此。然后在jquery中:

var id = $(this).attr('data-id');
$("#details_"+ id).hide();  // or show()

那应该让你开始。


2) 无法从您的代码中看出 $this->model->comment() 正在做什么;你只需要做一些基本的调试。

我已经专门针对调试此类问题(甚至使用 CI)编写了一个 tut,因此请在此处查看如何调试这些问题

http://codebyjeff.com/blog/2013/04/how-do-i-use-ajax-with-framework-x

于 2013-05-15T23:48:02.590 回答