Ajax 仅适用于第一次从 php 中的 while 循环中获取数据

Posted

技术标签:

【中文标题】Ajax 仅适用于第一次从 php 中的 while 循环中获取数据【英文标题】:Ajax only working for first fetching data from while loop in php 【发布时间】:2021-03-01 22:33:52 【问题描述】:

我有一些评论框系统。哪些来自带有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('');    
            
        );
    
);

【问题讨论】:

我没有看到一个while循环!我在您的 Ajax 帖子中没有看到 url: 参数?看不出这是怎么回事! @RiggsFolly PHP 代码在同一页面中,这就是为什么不使用任何 url。它仅适用于第一个查询。但不适用于所有其他查询 Check the pink box 【参考方案1】:

这是因为以下几行:

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

$(".userPostID") 选择整个页面上所有类为.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 成功函数中做同样的事情。

【讨论】:

很高兴听到这个消息:)

以上是关于Ajax 仅适用于第一次从 php 中的 while 循环中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

头文件中的 CSS/less 仅适用于索引页面

Ajax 调用仅适用于表的第一行,不适用于下一行

file_exists 或 getimagesize 仅适用于本地、绝对文件路径,但不适用于 PHP 中的 URL

MVC 模型绑定到列表 - 仅适用于列表中的第一项

复选框(Icheck)限制不适用于数据表中的其他页面,仅适用于第一页

如何使按钮(输入)仅适用于 html 中的一个文本框?