首页 > 解决方案 > 如何使用 AJAX 在循环中更新 ACF 字段

问题描述

我正在运行一个显示自定义类型帖子的循环。每个帖子都有一个<button class=favorite-toggle>add to favorites</button>。当用户单击按钮时,我希望将该帖子对象添加到特定于该用户的转发器字段中。

如何使用 AJAX 完成此任务?我的基本理解是,我需要将 post_ID 和 user_ID 变量传递给 JS,然后通过 AJAX 函数,将变量传递给一个包含我的函数的新 PHP 文件,但我无法做到这一点。任何帮助将非常感激!

标签: phpajaxwordpressadvanced-custom-fields

解决方案


我不确定您可以使用哪些 JS/PHP 框架,但 HTML + JS 的普通解决方案将是这样的:

var btnAddToFavorites = document.getElementById('js-add-to-favorites');
btnAddToFavorites.addEventListener('click', function(e) {
  let _data = {
    post_ID: "1234"
  }

  fetch("addToFavourite.php", {
      method: "POST",
      body: JSON.stringify(_data),
      headers: {
        "Content-Type": "application/json"
      }
    })
    .then(response => response.json())
    .then(json => {
      console.log("success")
      console.log(json)
    })
    .catch(err => console.log(err));
});
<button class="favorite-toggle" id="js-add-to-favorites">Add to Favorites</button>

和 PHPaddToFavourite.php

<?php
$body = file_get_contents("php://input");
$object = json_decode($body, true);
print_r($object);
?>

有几种方法可以将 Post ID 放入 JS 函数中。如果您的 JS 中还没有任何数据/视图模型,那么假设您有 PHP 生成页面,您可以将其添加到按钮

<button class="favorite-toggle" id="js-add-to-favorites" data-postid="1234">Add to Favorites</button>

并将其加载到 JS 中

e.getAttribute("data-postid")

推荐阅读