AJAX-单击按钮运行PHP函数

AJAX-单击按钮运行PHP函数,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我有一个简单的基于PHP的计数器Wordpress函数,它可以在每次加载页面时更新用户元 我想做的是只在单击特定按钮时运行此函数 我的按钮标记 <a class="button" id="interaction-count" href="#">Interaction</a> 当点击交互计数按钮时,是否可以运行此操作?我想会涉及到一些AJAX?如果有人给我指出了正确的方向,那就太好了你也可以同步进行,但最好的方法肯定是使用ajax 因此,在简单js中(没有jquery)的

我有一个简单的基于PHP的计数器Wordpress函数,它可以在每次加载页面时更新用户元

我想做的是只在单击特定按钮时运行此函数

我的按钮标记

<a class="button" id="interaction-count" href="#">Interaction</a>

当点击
交互计数
按钮时,是否可以运行此操作?我想会涉及到一些AJAX?如果有人给我指出了正确的方向,那就太好了

你也可以同步进行,但最好的方法肯定是使用ajax

因此,在简单js中(没有jquery)的代码是:

<input type="button" ... onclick="CallPhpFunction()" />
....
<script>
function CallPhpFunction() {
    var xhttp=new XMLHttpRequest();
    xhttp.open('POST', 'phpscript.php', true);
    xhttp.send('data=somedata&otherData=someotherdata');
}
</script>

....
函数CallPhpFunction(){
var xhttp=newXMLHttpRequest();
open('POST','phpscript.php',true);
send('data=somedata&otherData=someotherdata');
}

在这个示例中,我还展示了如何将数据发送到php脚本,并将其传递给send方法。这可以在php脚本中使用$\u POST。

使用Ajax是最好的选择

<a class="button" id="interaction-count" href="#" onclick="setCvDownloads(<?php echo $post->ID);">Interaction</a>
savedata.php

<?php
include('../../wp-config.php'); // Ensure that your wp-config file is connected here correctly.
$post_ID = $_POST['post_id']; // Getting the posted POST ID over ajax here.
$count_key = 'download_count';
    $count = get_user_meta($post_ID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_user_meta($post_ID, $count_key);
        add_user_meta($post_ID, $count_key, '0');
    }else{
        $count++;
        update_user_meta($post_ID, $count_key, $count);
    }
?>

使用jQuery。这个jQuery代码应该可以做到这一点,但是您需要一个PHP文件来捕获请求

$("#interaction-count").on("click", function(){
    $.ajax({
      type: "POST",
      url: "/somephpfile.php",
      data: {},
      success: success,
      dataType: dataType
    });
});

为此,您需要在wordpress循环中添加以下代码

<a class="button" id="interaction-count" href="#"
 onclick="increaseMyCount('<?php the_ID();?>')">Interaction</a>

<script type="text/javascript">
function increaseMyCount(numb_data)
{
jQuery.ajax({
method: "POST",
url: "<?php bloginfo('url');?>/wp-admin/admin-ajax.php",
data: { postid: numb_data, action: 'setcvdownloads' }
})
.done(function( msg ) {
alert( "Data Saved: " + msg );
});
}
</script>

函数增量myCount(numb_数据)
{
jQuery.ajax({
方法:“张贴”,
url:“/wp admin/admin ajax.php”,
数据:{postid:numb_数据,操作:'setcvdownloads'}
})
.done(函数(msg){
警报(“保存的数据:“+msg”);
});
}
在主题文件的functions.php中,您需要编写以下代码

<?php
function setCvDownloads() {
    $count_key = 'download_count';
    $postID=$_POST['postid'];
    $count = get_user_meta($postID, $count_key, true);
    if($count==''){
    $count = 0;
    //delete_user_meta($postID, $count_key);
    add_user_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_user_meta($postID, $count_key, $count);
    }
    echo "Saved";
    wp_die();
}
add_action( 'wp_ajax_setcvdownloads', 'setCvDownloads' );
add_action( 'wp_ajax_nopriv_setcvdownloads', 'setCvDownloads' );
?>


正确-单击“交互计数”按钮时可以运行它,而且是的,ajax可能是最好的选择。从中可以获得
$myValue
值……还有一个注意事项,您没有在函数中的任何地方使用过
$myValue
。@NareshKumar.P是的,对不起,这是一个旧值,我已经编辑了我的问题,这意味着你可以选择ajax方法,它会很好地工作。。将尽快发布ajax函数。检查一下..我目前拥有的
setCvDownloads
函数是一个PHP函数,因此我假设它在JS?@DeanElliott中不起作用。我已经通过编辑将Ajax代码添加到我的答案中。检查并让我知道。:)
<a class="button" id="interaction-count" href="#"
 onclick="increaseMyCount('<?php the_ID();?>')">Interaction</a>

<script type="text/javascript">
function increaseMyCount(numb_data)
{
jQuery.ajax({
method: "POST",
url: "<?php bloginfo('url');?>/wp-admin/admin-ajax.php",
data: { postid: numb_data, action: 'setcvdownloads' }
})
.done(function( msg ) {
alert( "Data Saved: " + msg );
});
}
</script>
<?php
function setCvDownloads() {
    $count_key = 'download_count';
    $postID=$_POST['postid'];
    $count = get_user_meta($postID, $count_key, true);
    if($count==''){
    $count = 0;
    //delete_user_meta($postID, $count_key);
    add_user_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_user_meta($postID, $count_key, $count);
    }
    echo "Saved";
    wp_die();
}
add_action( 'wp_ajax_setcvdownloads', 'setCvDownloads' );
add_action( 'wp_ajax_nopriv_setcvdownloads', 'setCvDownloads' );
?>