亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將值從 php 數據返回到 ajax 成功

如何將值從 php 數據返回到 ajax 成功

PHP
MMTTMM 2023-07-08 15:40:30
我什至不確定我的標題是否正確。無論如何,我正在創建一個頁面,用戶可以在其中提交消息/帖子,目前正在嘗試找出如何使用短輪詢(即 setinterval)在特定秒數內更新每個帖子的點贊數 - 這是有意為之現在。這只是一種做法,我知道我沒有使用參數化查詢,并且短輪詢并不理想,但我現在將其擱置。這可能是我最長的帖子,抱歉,但我被告知這比提供半生不熟的輸入/問題方便得多。我有這個Jquery:function refreshPostLikes() {  var postid_array = []; //establish array for postid  $(".post .postid").each(function () {    //get id for each post    var postid = $(this).attr("value");    postid_array.push(postid); //place all the postid in an array  });  updatePostLikes(postid_array); //pass the array}function updatePostLikes(postid) {  setInterval(function () {    $.ajax({      url: "/main/refresh-like.php",      type: "post",      data: { postid: postid }, //send postid array to php file      success: function (data) {        alert(data); //testing because I don't know how      },    });  }, 20000); //just 20 seconds interval}refreshPostLikes(); //run function這是我的PHP 文件,refresh-like.php!<?phprequire_once '../connection.php';$postID = trim(json_encode($_POST['postid']), '[]'); //convert array to string and remove square brackets to be a valid value for MySQL query$likeQuery  = "select count(*) as total_likes from likes where post_id in ('.$postID.') group by post_id order by post_id desc"; //query number of likes$likeResult = mysqli_query($conn, $likeQuery);while ($row = mysqli_fetch_assoc($likeResult)) { //loop through the query    $likes = $row['total_likes'];    echo $likes; //output number of likes per post and pass it to ajax data success}?>使用上面的代碼,如果我有三個帖子(混合有 1、2 和 0 個喜歡),Ajax 成功下的警報(如我指出的“正在測試,因為我不知道如何”)將顯示一條消息:1、2 , 0,這是正確的!這些數字集中在一個警報中,僅供參考?,F在我的問題是如何將這些值傳遞回 Likes div 下的每個帖子?我的意思是postid1有1個贊,postid2有2個贊,postid3有0個贊。通常我選擇單個元素并使用 .html 傳遞,但是如果返回的 php 數據是全部(即 2, 1, 0),該怎么辦。我知道我需要在這里做出調整:success: function(data) {    alert(data); //testing because I don't know how}
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

首先,您需要某種表格來匹配帖子的喜好。然后你就可以更新相應帖子的div的內容了.likes。


又快又臟


由于您的 PHP 已經返回"1, 2, 0"posts和的字符串1,因此只需在 Javascript 中簡單地拆分該字符串,然后按順序更新 div 即可:23.likes


success: function(data) {

  var likes = data.split(", "); // likes will hold ["1", "2", "0"]

  $('.likes').each(function(i, likeDiv) {

    $(likeDiv).text(likes[i]);

  });

}

這適用于您的特定情況,但依賴于這樣一個事實:您的 HTML 的排序方式與您的帖子在數據庫中的排序方式完全相同。所以不太有彈性。


相反,我建議您更改 PHP,使其同時具有點贊數和帖子 ID,并將整個內容作為 JSON 進行回顯


JSON


PHP


<?php

require_once '../connection.php';


$postID = trim(json_encode($_POST['postid']), '[]'); //convert array to string and remove square brackets to be a valid value for MySQL query


$likeQuery  = "select count(*) as total_likes from likes where post_id in ('.$postID.') group by post_id order by post_id desc"; //query number of likes

$likeResult = mysqli_query($conn, $likeQuery);


// build output collection

$output = [];

while ($row = mysqli_fetch_assoc($likeResult)) { //loop through the query

    $output[] = [

        'post_id' => $row['post_id'],

        'likes'   => $row['total_likes']

    ];

}


echo json_encode($output);

// [{"post_id": 1, "likes": 1}, {"post_id": 2, "likes": 2}, {"post_id": 3, "likes": 0}]'

?>

JS


success: function(data) {

  var postsLikes = JSON.parse(data);

  for (var i = 0; i < postsLikes.length; i++) {


    // find corresponding post

    var $post = $('.postid').filter(function(j, postIdDiv) {

      return postIdDiv.textContent == postsLikes[i].post_id

    }).parent()


    // update likes count in post

    $post.find('.likes').text(postsLikes[i].likes)

  }

}


查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號