【问题标题】:Loading content in page via jQuery - codeigniter通过 jQuery 在页面中加载内容 - codeigniter
【发布时间】:2014-04-21 00:21:09
【问题描述】:

我有两个视图 main.php 和 details.php。 ma​​in.php 中有很多内容,每个内容下都有一个“查看更多”按钮。如果有人点击查看更多,ajax 调用将从 details.php 动态加载其余内容,这将从数据库 w.r.t 内容的 ID 中获取数据。它是 details.php 中的列表样式视图。 在 main.php 的头文件中,我的主脚本文件包含此代码 sn-p 以从 details.php 中获取数据 -

$('.view_more').click(function(e) {
  $.ajax({
  type: 'POST',
  url: '/path/to/my/controller/method',
  dataType: 'html',
  success: function (html) {
   $('#details_container').html(html);
  }
});
});

数据正在完美加载。但问题是 details.php 中有一个 add content 按钮以及动态加载的每个内容都不起作用。内容添加脚本在我的main.js中添加在main.php中。但是我必须添加在 details.php 中添加内容的这个特定的 jquery 代码 sn-p,否则它不起作用。因此,每当单击查看更多内容时,它都会返回 html 数据以及用于添加内容的....代码....坚持下去。这根本不是我们想要的。

如何解决这个问题?请帮忙。提前致谢。

这是添加内容的代码。

<script type="text/javascript">
$('.add_this').click(function(){

      var t = jQuery(this);
  var id_add = t.attr("id");
  var content_category_id = t.attr("rel");
  var add_content_id = id_add.substring(id_add.indexOf('_')+1);
  var content_creator_id = t.attr("data-clip-id");

  $.ajax({
            type: "POST",
            url: "/path/to/my/controller/method",
            data: add_content_id,
            cache: false,
            success: function(response){
                if(response)
                {
                    $("#"+id_clip).text("Clipped");
                }
            }
        });
        });
      </script>

我想再次添加我可以添加内容,但要这样做,我必须将此代码 sn-p 嵌入到我不想做的 details.php 中。我需要从我的主脚本文件中运行。

【问题讨论】:

  • 向我们展示add_content的点击功能,以便我们为您提供适当的帮助。
  • 使用 $(document).on('click','.add_this',function(){ //你的代码 });而不是 $('.add_this').click(function(){})
  • 使用这个 $(document).on('click','.add_click',function(){});
  • 我给你一个真诚的建议。请不要在php页面上创建整个html模板。使用它只是返回JSON对象。使用你的jquery将它们放到html文档中。跨度>
  • 好的@Tyranicangel 我会考虑你的宝贵意见。但我不是这方面的专家。如何使用 JSON。你能举个例子或任何链接,我如何从数据库中获取数据,使 JSON 编码并将其放入 jquery 中填充它。谢谢。

标签: javascript php jquery ajax codeigniter


【解决方案1】:

这应该可行:

$(document).on('click','.add_this',function(){
  var t = jQuery(this);
  var id_add = t.attr("id");
  var content_category_id = t.attr("rel");
  var add_content_id = id_add.substring(id_add.indexOf('_')+1);
  var content_creator_id = t.attr("data-clip-id");

  $.ajax({
        type: "POST",
        url: "/path/to/my/controller/method",
        data: add_content_id,
        cache: false,
        success: function(response){
            if(response)
            {
                $("#"+id_clip).text("Clipped");
            }
        }
    });
    });

【讨论】:

  • 谢谢@Kamlesh。您能否描述一下为什么 $(document).on(click) 起作用的技术部分???
  • $(selector).click(function(){}) 适用于静态页面和内容。因此,如果您确定您的内容不会改变,那么您可以采用这种方法。但是如果你有动态内容,那么你需要遵循这种方式: $(parent).on('event','selector',function()) 这是在最新的 jQuery 更新和版本中引入的。 "live" 也被替换为 "on" 。可以参考 jQuery 文档。
  • @user3177114 如果它回答了您的问题,您可以将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多