如何使用fetch将数据发布到functions.php

wgx48brx  于 2023-11-16  发布在  PHP
关注(0)|答案(2)|浏览(99)

我试图对functions.php文件发出获取请求。我试图避免jQuery和Ajax,这就是为什么我使用标准获取API。
我的一个主题页面中的代码:

<button @click="load()">test</button>

字符串
和脚本部分在同一个文件中:

<script>
function load() {

    fetch('<?php echo admin_url('admin-post.php'); ?>', {
            method: 'POST',
            headers: {
                'x-requested-with': 'XMLHttpRequest'
            },
            body: JSON.stringify({
                action: 'my-action'
            })
        }).then(data => {
        console.log(data);
    })
}
</script>


我的functions.php文件中的代码:

add_action('wp_ajax_my_action' , 'data_fetch');
add_action('wp_ajax_nopriv_my_action','data_fetch');

function data_fetch(){
    echo "hi";
}


在控制台中,响应工作,但它不返回任何东西。我认为它只是找到文件,所以它返回200,但data_fetch函数从未执行。
我怎么才能让它工作?
谢谢你的帮助;)。
此分类下一篇:https://www.it-swarm.dev/de/functions/ajax-live-suche-nach-posttitel/961942434/

afdcj2ne

afdcj2ne1#

我认为您不需要为该示例使用特定头请求
使用FormData()

"use strict";

(function () {
  var data = new FormData();  // create an Object and take your data
  data.append("action", "my-action");
  fetch([Object Object], { // use your ajax url instead of ***[Object Object]***
    method: "POST",
    credentials: "same-origin",
    body: data, // put your data into fetch body
  })
    .then((response) => response.text())
    .then((data) => {
      if (data) {
        console.log(data);
      }
    })
    .catch((error) => {
      console.log("[ OPS!! my_action ]");
      console.error(error);
    });
})();

字符串

lymgl2op

lymgl2op2#

你可以把action作为参数添加到url中,这对我来说很有效。

.....
fetch('<?php echo admin_url('admin-post.php') . "?action=my-action"; ?>', {
.....

字符串

相关问题