首页 > 解决方案 > Ajax 仅适用于第一次从 php 中的 while 循环中获取数据

问题描述

我有一些评论框系统。哪些来自带有specefiq post id的mysql数据库。但是,每当我在评论框上写文本并提交这些文本时,只有来自 while 循环的第一个框工作正常。但其他人没有采取数据。我将类用于那些评论框部门而不是 id。这里有什么问题?来自mysql数据库的所有盒子如何才能很好地作为第一个输入数据?

这是我的代码

while($rowCom = $resultComment->fetch_assoc()) {
    $posterID= $rowCom['poster'];
    $posterComment = $rowCom['comment'];
    $Commenttime = $rowCom['datetime'];
?>
<div class="comment-form-login">
    <input type="number" class="userPostID" name="postid" value="<?php echo $postID ?>" style="display:none;">
    <input type="number" class="userID" name="postuser" value="<?php echo $userID ?>" style="display:none;">
    <input type="number" class="LoginUserID" name="LoginUser" value="<?php echo $userLogin ?>" style="display:none;">
    <input type="text" class="usercomment leave-a-comment" placeholder="Leave a comment">
</div>
                        
<php  
} 
?>

来自ajax的代码

$(".leave-a-comment").on('keypress',function(e) {
    if(e.which == 13) {
        var userpostID = $(".userPostID").val();
        var userID = $(".userID").val();
        var loginuserID = $(".LoginUserID").val();
        var loginComment = $(".leave-a-comment").val();

        $.ajax({
                
            type: "POST",
            async: false,
            data: {
                    "done":1,
                    "userPOSTID":userpostID,
                    "userID":userID,
                    "loginUserID":loginuserID,
                    "LoginComment":loginComment 
            },
            success: function(data){
                $(".userPostID").val('');
                $(".userID").val('');
                $(".LoginUserID").val('');
                $(".leave-a-comment").val('');    
            }
        });
    }
});

标签: phpmysqlajaxwhile-loop

解决方案


这是因为以下几行:

var userpostID = $(".userPostID").val();
var userID = $(".userID").val();
var loginuserID = $(".LoginUserID").val();
var loginComment = $(".leave-a-comment").val();

$(".userPostID")使用 class 选择整个页面上的所有元素.userPostID。然后 jQuery 的.val()函数返回匹配元素集合中第一个元素的值,这意味着您的第一篇文章的值。

将代码更改为以下内容:

var userpostID = $(this).siblings(".userPostID").val();
var userID = $(this).siblings(".userID").val();
var loginuserID = $(this).siblings(".LoginUserID").val();
var loginComment = $(this).val();

在你的 ajax 成功函数中做同样的事情。


推荐阅读