【问题标题】:how to make twitter like follow button using jquery and codeigniter如何使用 jquery 和 codeigniter 制作 twitter 之类的关注按钮
【发布时间】:2016-08-15 16:01:00
【问题描述】:

客户端代码

$(document).ready(function() {
  $(" a .follow").click(function() {

    var thiss = $(this);
    var state = thiss.attr("data-state");
    var id = thiss.attr("id");
    var follow = thiss.attr("data-follow");
    alert(value + id + flag);
    $.post("<?php echo base_url()?>profile/insert_follow", {
      state: state,
      id: id,
      follow: follow
    }, function(data) {

      if (thiss.hasClass("follow")) {

        var abc = "<a class="btn btn-info btn-follow unfollow" data-state="2" data-follow="<? php echo $artist_info - > id ?>" data-id="<? php echo $this->session->userdata('username') ?>">Following</a>";
        thiss.append(abc);

      }
      elseif(thiss.hasClass("unfollow")) {

        var abc1 = "<a class="btn btn-info btn-follow follow" data-state="2" data-follow=" <? php echo $artist_info->id ?> " data-id=" <? php echo $this->session->userdata('username') ?> ">Follow</a>";
        thiss.append(abc1);
      }
      $('.followers').children('span').html(data);
    });
  });
});

服务器端代码

public function insert_follow(){
    $id=$_POST['id'];
    $follows = $_POST['follows'];
    $state = $_POST['state'];
    $data1=array(
            'id'=>$id,
            'follows' =>$follows,
            'state' =>$state
                    );

    $query=$this->hbmodel->follow_artist($data1);


}

在这里,我尝试使用 var abc 中给定的 html 信息更新元素 .follow 的内容。但它不起作用。该代码还包括 ajax 的内容。也许问题可能出在我加载 jquerybootstrap.min.js 文件时得到的 304 状态。这是codeigniter控制器中的功能。您可以使用this link 大致了解我要做什么

【问题讨论】:

  • "it's not working" 并没有真正描述问题。 如何“不工作”?它失败的具体方式是什么?当您调试它时,它在哪里/如何确切地失败了?
  • 我发现您的语法存在多个问题。 elseif应该是else ifthiss应该是this,你不应该声明一个名为thisvariable,是a.follow还是a .follow(巨大的差异),你应该分开你的@ 987654337@ 来自您的其余代码在另一个 function
  • 您的控制台有错误吗? var abc = "&lt;a class="btn btn-info btn-follow unfollow" 在我看来,这似乎是您混淆了引号。试试这个:var abc = '&lt;a class="btn btn-info btn-follow unfollow" [...] ';
  • 我已经更改了 sublime 上的代码,但是由于同样的原因,浏览器仍然在线显示错误。语法错误:缺少;之前声明为什么?我在编辑@empiric 后保存了页面

标签: javascript php jquery ajax codeigniter


【解决方案1】:

据我所知,当您创建变量 abcabc1 时,您尝试使用 concat string。你的代码应该是这样的:

var abc = '<a class="btn btn-info btn-follow unfollow" data-state="2" data-follow="<? php echo $artist_info->id ?>" data-id="<? php echo $this->session->userdata('username') ?>">Following</a>';

代替:

var abc = "<a class="btn btn-info btn-follow unfollow" data-state="2" data-follow="<? php echo $artist_info->id ?>" data-id="<? php echo $this->session->userdata('username') ?>">Following</a>";

微妙之处在于您尝试添加的元素开头和结尾的单引号;

另外,您正在向 DOM 添加纯文本。试试这个:

thiss.append($(abc));

thiss.append(abc);

但这是基于问题不清楚的疯狂猜测。

【讨论】:

  • 我已经更改了 sublime 上的代码,但由于相同的原因,浏览器仍然在线显示错误。语法错误:缺少;之前声明为什么?我在编辑 @chax 后保存了页面
  • 哪一行?如果您使用 chrome,则可以选择在开发人员模式 (F12) 下不保留缓存。也试试吧。
  • 传递给 getElementById() 的空字符串。好吧,这是我现在每次点击以下链接时遇到的错误
  • data 是否包含某些内容?在$('.followers...之前添加这一行console.log(data)
  • 在chrome下几乎所有浏览器中按F12都会出现控制台,它是F12->控制台
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2011-09-08
  • 2017-10-08
  • 2013-01-29
  • 2012-09-02
相关资源
最近更新 更多