一旦传递给函数,如何清空函数参数?

时间:2017-03-08 11:39:16

标签: javascript php jquery ajax

我试图在一个函数中发送参数,但是它在一个循环中,所以当我下次第一次向我发送前一个值时选择相同的函数然后向我发送我想要的值,这会导致函数为空并且没有任何价值,让我告诉你我的代码。

$(window).load(function(e) {
  loadmore();
  select_likes();
  select_share();
  // get_recieve_friend_requests();
  // get_sent_friend_requests();
});

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) {
          var post_id = data.id;
          var post_status = data.status;
          var status_image = data.status_image;
          var multimage = data.multimage;

          if (!post_status == "" && !status_image == "") {
            alert(post_id);
            $("#status_data").append('<div class="media-body"><div class="input-group"><form action="" id="form_content_multimage"><textarea name="textdata" id="content_comment_multimage" cols="25" rows="1"  class="form-control message"  placeholder="Whats on your mind ?"></textarea><button type="submit" id="comment_button_multimage" onclick="comment_here_multimage(' + post_id + ');" >Comment</button><?php echo form_close();?></div></div></li></ul></div></div>');
          }
        });
      }
    }
  });
}

function comment_here_multimage(post_id) {
  $(document).on('click', '#comment_button_multimage', function(e) {
    // this will prevent form and reload page on submit.
    e.preventDefault();
    var post_id_multimage = $('#post_id_multimage').val();
    // here you will get Post ID
    alert(post_id_multimage);
    var Post_id = post_id;
    alert(post_id);

    if (post_id == post_id_multimage) {
      var User_id = $('.id_data').attr('value');
      var textdata = $('#content_comment_multimage').val();
      alert(textdata);
      alert(Post_id);
      $.ajax({
        type: 'POST',
        url: '<?php echo base_url("user/post_comment"); ?>',
        data: {
          Post_id: Post_id,
          User_id: User_id,
          textdata: textdata
        },
        dataType: 'json',
        success: function(data) {
          console.log(data);
          alert('you have like this');
          jQuery('#form_content_multimage')[0].reset();
          Post_id = "";
        }
      });
    } else {
      return false;
    }
  });
}

post_id正在传递comment_here_multimage的onclick事件,但是当我第一次在第一次再次传递相同的id之后点击它,然后下一个id通过。什么可以在post_id值完成后清空它。

看看这些图片并告诉我你是否有不明白的东西。

[![first time comment][1]][1]     
[![second time comment][2]][2]
[![second time comment][3]][3]


  [1]: https://i.stack.imgur.com/b36o4.png
  [2]: https://i.stack.imgur.com/ahg3W.png
  [3]: https://i.stack.imgur.com/taHAS.png

1 个答案:

答案 0 :(得分:2)

您的问题未在代码中隔离。但是根据我的理解。

你有约束力&#34; comment_here_multimage&#34;在创建动态html时,单击按钮事件的功能。 加载上下文并且用户单击该按钮后,您再次将另一个函数绑定在同一个按钮上,该按钮最终会添加到事件堆栈中。

如果用户第一次点击该按钮,则不会发生任何操作。第一次它会用它注册一个处理程序。 如果用户第二次单击它将触发第一次单击时附加的处理程序,从而导致提供给它的旧postid。

我认为您的问题在于传递参数。您可以在自定义参数中设置它,稍后在单击处理程序中获取它。或者你可以改变你的处理程序,如下所示。

您可以像这样更改代码

onclick="comment_here_multimage(this,' + post_id + ');"

    function comment_here_multimage(e,post_id) {

    // this will prevent form and reload page on submit.
    e.preventDefault();
    var post_id_multimage = $('#post_id_multimage').val();
    // here you will get Post ID
    alert(post_id_multimage);
    var Post_id = post_id;
    alert(post_id);

    if (post_id == post_id_multimage) {
      var User_id = $('.id_data').attr('value');
      var textdata = $('#content_comment_multimage').val();
      alert(textdata);
      alert(Post_id);
      $.ajax({
        type: 'POST',
        url: '<?php echo base_url("user/post_comment"); ?>',
        data: {
          Post_id: Post_id,
          User_id: User_id,
          textdata: textdata
        },
        dataType: 'json',
        success: function(data) {
          console.log(data);
          alert('you have like this');
          jQuery('#form_content_multimage')[0].reset();
          Post_id = "";
        }
      });
    } else {
      return false;
    }
  ;
}