dsmnedc798226 2016-10-17 13:06
浏览 38

Ajax表单提交内部循环提交不止一次

I have a ajax script and form inside a loop - (One per user). While the form, and submit button both have a unique id of the user. yet they are still being submitted more than once as soon as I hit the button.

Here is my script

<?php $results = $con->query("SELECT * FROM tbl_users"); ?>
          <?php while($result = $results->fetch_object()): ?>
            <div class="chat" data-chat="person<?=$result->user_id?>">
                <div class="conversation-start">
                </div>

                <?php 
                $sender = $result->user_id;
                $messageload = $con->query("SELECT * FROM messages WHERE sender = $sender"); ?>

                <?php while($message = $messageload->fetch_object()): ?>
                  <div class="bubble you">
                      Hello,
                  </div>
                  <div class="bubble me">
                      Are you serious?
                  </div>
                <?php endwhile;?>
            </div>

            <div class="write">
            <form autocomplete="off" id="SendForm<?=$result->user_id?>" class="SendMsg" role="form" method="post">
                <input type="text" id="message" name="message" />
                <input id="sender" name="sender" value="<?= $_SESSION['user']['user_id']?>" style="display:none;"/>
                <input id="recipient" name="recipient" value="<?=$result->user_id?>" style="display:none;"/>
                  <input style="" id="submit" class="submit MsgInputHidden" type="submit" name="submit" value="Submit" />

                 </form>
            </div>
                     <script>
  $(function() {
    $(document).on('submit', 'form#SendForm<?=$result->user_id?>', function(e){
    e.preventDefault();
          $.post('message_send.php', $(this).serialize(), function (data) {
              // This is executed when the call to mail.php was succesful.
              // 'data' contains the response from the request
              $('#message').val(''); 
          })
          .error(function() {
              $('#message').val('');        
               });
          e.preventDefault();
                      $('#message').val(''); 
    })

  });
</script>
          <?php endwhile;?>

</div>
  • 写回答

1条回答 默认 最新

  • duanre1891 2016-10-17 13:18
    关注

    Try This :

    <?php $results = $con->query("SELECT * FROM tbl_users"); ?>
    <?php while ($result = $results->fetch_object()): ?>
        <div class="chat" data-chat="person<?= $result->user_id ?>">
            <div class="conversation-start">
            </div>
    
            <?php
            $sender = $result->user_id;
            $messageload = $con->query("SELECT * FROM messages WHERE sender = $sender");
            ?>
    
            <?php while ($message = $messageload->fetch_object()): ?>
                <div class="bubble you">
                    Hello,
                </div>
                <div class="bubble me">
                    Are you serious?
                </div>
            <?php endwhile; ?>
        </div>
    
        <div class="write">
            <form autocomplete="off" id="SendForm<?= $result->user_id ?>" class="SendMsg" role="form" method="post" onsubmit="return add_message(this);">
                <input type="text" id="message" name="message" />
                <input id="sender" name="sender" value="<?= $_SESSION['user']['user_id'] ?>" style="display:none;"/>
                <input id="recipient" name="recipient" value="<?= $result->user_id ?>" style="display:none;"/>
                <input style="" id="submit" class="submit MsgInputHidden" type="submit" name="submit" value="Submit" />
    
            </form>
        </div>
    <?php endwhile; ?>
    <script>
    
        function add_message(form){
            $.post('message_send.php', $(form).serialize(), function (data) {
    // This is executed when the call to mail.php was succesful.
    // 'data' contains the response from the request
                    $('#message').val('');
                }).error(function () {
                    $('#message').val('');
                });
                $('#message').val('');
                return false;
        }
    
    
    </script>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图