AJAX-单击按钮运行PHP函数
我有一个简单的基于PHP的计数器Wordpress函数,它可以在每次加载页面时更新用户元 我想做的是只在单击特定按钮时运行此函数 我的按钮标记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)的
<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' );
?>