【问题标题】:How to access the value of $.each outside the loop in ajax success?如何在ajax成功的循环外访问$ .each的值?
【发布时间】:2017-03-06 05:12:37
【问题描述】:

大家好,我正在尝试在循环外使用 $.each 的值,但是每当我保存“id”时,它会再次向我显示相同的数据,所以我如何在循环外访问该值。让我给你看看我的代码。

现在,当我尝试在类似函数中访问 $post_id 的值时,它会在某个循环中再次向我显示相同的 id。就像如果我将 id 设为 464 那么对于所有 post_id 它将是 464 但是当我附加 id 时它再次向我显示原始 id

我可以做些什么来访问类似函数中的 id 值?

    function loadmore(){
          var lastID = $('.load-more').attr('lastID');
         //alert(lastID);
         
              jQuery.ajax({
                  type:'POST',

                  url:'<?php echo base_url("user/get_all_post"); ?>',
                   data: {id:  lastID },
                      dataType: 'json', 
                
                
                  beforeSend:function(data){
                      $('.load-more').show();
                  },
                  success:function(data){

                         var ParsedObject = JSON.stringify(data);            
                         var json = $.parseJSON(ParsedObject);
                          
                         
                         if (json=="") {
                          $("#bottom").append('<div class="btn btn-default col-md-6" >'+'No More Results'+'</div>');
                          $("#Load_more_data").hide()
                        
                         }else{
                           $postID=json[json.length-1].id;
                            
              $('.load-more').attr('lastID', $postID);

                $.each(json, function (key, data) {
   $post_id=data.id;
 
   var post_id=data.id;
   $('.post_id_value').attr('post_id', $post_id);
    var post_status=data.status;
     var status_image=data.status_image;
    var multimage=data.multimage;
  

                             if(!post_status=="" && !status_image==""){
                               $("#status_data").append('<input type="text" value="'+ post_id+'" class="post_id_value"> <div class="col-md-6 postdata"><a ><?php echo img($user_image); ?></a><a class="weshare_user_name text-font"><?php echo $uname; echo " "; echo $lname;?></a><div class="weshare_user_status">'+post_status+'</div><div class="weshare_user_singleimage"><img style="height:300px; width:400px;" src="<?php echo base_url('uploads'); ?>/'+status_image+'"></div><div class="row"><div class="col-md-12"><ul class="list-inline"><li><a href="#"><span class="glyphicon glyphicon-thumbs-up"></span> Like</a></li><li><a  onclick="like(this);"><span class="glyphicon glyphicon-comment"></span> Comment</a></li><li><a href="#"><span class="glyphicon glyphicon-share-alt"></span> Share</a></li></ul></div></div></div>');
                             }else{

                             }

                              if(!post_status=="" && status_image==""){
                               $("#status_data").append('<input type="text" value="'+ post_id+'" class="post_id_value"><div class="col-md-6 postdata" ><a ><?php echo img($user_image); ?></a><a class="weshare_user_name text-font"><?php echo $uname; echo " "; echo $lname;?></a><div class="weshare_user_status">'+post_status+'</div><div class="row"><div class="col-md-12"><ul class="list-inline"><li><a  onclick="like(this);"><span class="glyphicon glyphicon-thumbs-up"></span> Like</a></li><li><a ><span class="glyphicon glyphicon-comment"></span> Comment</a></li><li><a href="#"><span class="glyphicon glyphicon-share-alt"></span> Share</a></li></ul></div></div></div>');
                             }else{

                             }

                             
                             if (multimage=="") {

                             }
                              else{
                               $("#status_data").append('<input type="text" value="'+ post_id+'" class="post_id_value"><div class="col-md-6 postdata" ><a ><?php echo img($user_image); ?></a><a class="weshare_user_name text-font"><?php echo $uname; echo " "; echo $lname; ?></a><div class="weshare_user_multimage"><img style="height:300px; width:400px;" src="<?php echo base_url('uploads'); ?>/'+multimage+'"></div><div class="row"><div class="col-md-12"><ul class="list-inline"><li><a  onclick="like(this);"><span class="glyphicon glyphicon-thumbs-up"></span> Like</a></li><li><a href="#"><span class="glyphicon glyphicon-comment"></span> Comment</a></li><li><a ><span class="glyphicon glyphicon-share-alt"></span> Share</a></li></ul></div></div></div>');
                              }                              

                    });
                  }
              }
            });
          }

function like() {
  var Post_id = $('.post_id_value').attr('value');
  var User_id = $('.id_data').attr('value');
  alert(Post_id);
  jQuery.ajax({
    type: 'POST',
    url: '<?php echo base_url("user/post_likes"); ?>',
    data: {
      Post_id: Post_id,
      User_id: User_id
    },
    dataType: 'json',
    success: function(data) {
      console.log(data);
      alert();
    }
  });
}

here is the html part 
<div class="col-md-6 postdata">
  <a><img src="http://localhost/P_Display/uploads/camera-581126_1920.jpg" class="weshare_user_image" alt="" width="50px" height="50px"></a><a class="weshare_user_name text-font">Ashish Vyas</a>
  <div class="weshare_user_status">hi</div>
  <div class="row">
    <div class="col-md-12">
      <ul class="list-inline">
        <li><a onclick="like();"><span class="glyphicon glyphicon-thumbs-up"></span> Like</a></li>
        <li><a><span class="glyphicon glyphicon-comment"></span> Comment</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-share-alt"></span> Share</a></li>
      </ul>
    </div>
  </div>
</div>
这是like按钮,每当我点击它时,它就会运行ajax函数like();

【问题讨论】:

  • 我该怎么做你能告诉我吗?@madalinivascu
  • like函数有什么用?,你的json对象长什么样子?
  • 我创建了一个赞按钮,然后我将事件称为 onclick=like();当类似函数调用时,它会将帖子 ID 以及用户带到数据库,并在有人喜欢我的帖子时显示哪个用户喜欢我的哪个帖子。那就是使用like函数。 @madalinivascu
  • 将回调传递给loadmore 并在成功时调用此callback 并响应
  • 是的,只要发布一个帖子,它就会显示一个隐藏的输入 post_id @Jai

标签: javascript jquery ajax


【解决方案1】:

对我来说,您似乎正在使用类选择器访问一个值。每次都会给你最后一个元素的值。相反,只需将函数中的上下文传递为:

onclick="like(this)" 

现在在函数里改成这样:

function like(el) {
  var Post_id = $(el).closest('div').find('.post_id_value').attr('value');
  var User_id = $(el).closest('div').find('.id_data').attr('value');

除了上面我想在你的代码中提到一些指针:

  1. loadmore()dataType: 'json', 一样,所以你不需要解析响应。
  2. 不需要在下面执行此操作,因为这是由dataType:"json" 自动完成的。

var ParsedObject = JSON.stringify(data);
var json = $.parseJSON(ParsedObject);

【讨论】:

  • 抱歉,当我尝试在类似函数@Jai 中获取 $Post_id 的值时,它显示未定义
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 2019-07-24
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多