Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AJAX Wordpress插件_Php_Ajax_Wordpress - Fatal编程技术网

Php AJAX Wordpress插件

Php AJAX Wordpress插件,php,ajax,wordpress,Php,Ajax,Wordpress,我在自定义帖子类型页面上有一个完整/完成按钮 它可以工作,当有人单击按钮时,它会将正确的数据发送到数据库,并添加完成标记,但我想将其转换到ajax,但按钮本身不会发送任何数据。我根据帖子类型和用户id发送到服务器。我正试图弄明白这一点 在single.php中 <form action='' method="post" class='comp-btn'> <input class='workout-submit' id="workout-submit"type='subm

我在自定义帖子类型页面上有一个完整/完成按钮

它可以工作,当有人单击按钮时,它会将正确的数据发送到数据库,并添加完成标记,但我想将其转换到ajax,但按钮本身不会发送任何数据。我根据帖子类型和用户id发送到服务器。我正试图弄明白这一点

在single.php中

<form action='' method="post" class='comp-btn'>
   <input class='workout-submit' id="workout-submit"type='submit' name='complete' value='Complete'/>
 </form>

TLDR:我有一个post请求(有效),我想将其转换为AJAX调用。因为我不希望每次有人点击“完成”按钮时都重新加载

因为您使用的是Wordpress,所以AJAX最适合将数据发送到functions.php

首先,在html/js文件中:

$('.comp-btn').on('submit', function(){
    $.ajax({
        type: 'POST',
        url: "../../../../wp-admin/admin-ajax.php",
        data: {'action':'sendworkout','complete':$('.workout-submit').val()},
        success: function(response){
            console.log(response); // shows 'success'
            // do things here
        }
    });
});
其次,在WP functions.php中

add_action('wp_ajax_sendworkout', 'sendworkout');
add_action('wp_ajax_nopriv_sendworkout', 'sendworkout');
function sendworkout(){
    $workoutcomplete = $_POST['complete'];
    if($workoutcomplete){
        //DB insert here
    }
    wp_send_json_success('success');
}

请注意,ajax语法中的“action”指的是functions.php中的函数名,“complete”指的是functions.php中的$_POST['complete']?
add_action('wp_ajax_sendworkout', 'sendworkout');
add_action('wp_ajax_nopriv_sendworkout', 'sendworkout');
function sendworkout(){
    $workoutcomplete = $_POST['complete'];
    if($workoutcomplete){
        //DB insert here
    }
    wp_send_json_success('success');
}