Как избавиться от одного и того же идентификатора в цикле while при отправке формы с помощью ajax - PullRequest
0 голосов
/ 04 октября 2018

Я отправляю форму, используя ajax в цикле while, но из-за цикла один и тот же идентификатор формы используется много раз, поэтому в результате форма отправляется только один раз.Я думаю, что я должен сделать уникальный идентификатор каждый раз в цикле для формы, но не знаю как.

Вот мой код, пока

<?php
$get_cmt ="SELECT * FROM comments WHERE post_id = $post_id ORDER BY id DESC";
$query_cmt = mysqli_query($db_conx,$get_cmt);
while($row_cmt=mysqli_fetch_array($query_cmt,MYSQLI_ASSOC)){
$comtr_id = $row_cmt['comtr_id'];
$comment_id = $row_cmt['id'];
?>
            <form id="subcmt_smt" method="post">
            <textarea name="subcmt"></textarea>
            <input type="hidden" value="<?php echo $comment_id;?>" name="comment_id">
            <input type="hidden" value="<?php echo $pager_id;?>" name="comtr_id">  
            </form>
<?php } ?>
<script src="jQuery v2.1.1"></script>
<script>
$("#subcmt_smt").submit(function(e) {
            var form = $(this);
            var url = form.attr('action');
            e.preventDefault(); 
             $.ajax({
             type: "POST",
             url: "submit_subcmt.php",
             data: form.serialize(), // serializes the form's elements.
             success: function(data)
            {
             alert(data); // show response from the php script.
            }
        });
      });
 </script>

submit_subcmt.php

<?php
$comtr_id =$_POST['comtr_id'];
$comment_id =$_POST['comment_id'];
echo $comtr_id;
echo $comment_id;
?>

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Попробуйте это.

 <?php
   $get_cmt ="SELECT * FROM comments WHERE post_id = $post_id ORDER BY id DESC";
   $query_cmt = mysqli_query($db_conx,$get_cmt);
   while($row_cmt=mysqli_fetch_array($query_cmt,MYSQLI_ASSOC)){
   $comtr_id = $row_cmt['comtr_id'];
   $comment_id = $row_cmt['id'];
 ?>
        <form class="subcmt_smt" method="post">
        <textarea name="subcmt"></textarea>
        <input type="hidden" value="<?php echo $comment_id;?>" name="comment_id">
        <input type="hidden" value="<?php echo $pager_id;?>" name="comtr_id">  
        </form>
   <?php } ?>
   <script src="jQuery v2.1.1"></script>
    <script>
   $(".subcmt_smt").submit(function(e) {
        var form = $(this);
        var url = form.attr('action');
        e.preventDefault(); 
         $.ajax({
         type: "POST",
         url: "submit_subcmt.php",
         data: form.serialize(), // serializes the form's elements.
         success: function(data)
        {
         alert(data); // show response from the php script.
        }
    });
   });
 </script>
0 голосов
/ 04 октября 2018

Чтобы проиллюстрировать комментарий, который я сделал выше, вы можете попробовать что-то похожее на это.

<?php

    $get_cmt ="SELECT * FROM comments WHERE post_id = $post_id ORDER BY id DESC";
    $query_cmt = mysqli_query($db_conx,$get_cmt);

    while( $row_cmt=mysqli_fetch_array($query_cmt,MYSQLI_ASSOC) ){
        $comtr_id = $row_cmt['comtr_id'];
        $comment_id = $row_cmt['id'];

?>              <!-- use a class attribute here -->
                <form class="subcmt_smt" method="post">
                    <textarea name="subcmt"></textarea>
                    <input type="hidden" value="<?php echo $comment_id;?>" name="comment_id">
                    <input type="hidden" value="<?php echo $pager_id;?>" name="comtr_id">  
                </form>
<?php 
    }//end loop
?>


<script src="jQuery v2.1.1"></script>
<script>
    /* and assign event handlers to form objects with this class as per above */
    $("form.subcmt_smt").submit(function(e) {
        var form = $(this);
        var url = form.attr('action');
        e.preventDefault(); 
        $.ajax({
            type: "POST",
            url: "submit_subcmt.php",
            data: form.serialize(),
            success: function(data) {
                alert(data);
            }
        });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...