好的,我的代码是要使用下面的jquery代码从函数中提取出来的,但它没有提取代码,我看不出为什么不能。
我的页面代码
<script>
var click_to_choose_user = function(){
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: "action=twitchuser",
success: function(msg){
jQuery(\'.twich-names\').text(msg)
}
});
}
</script>
<?php
echo \'<span class="twitch-names"> \' . $twitchusername . \'</span>\';
echo \' <form action="xxx" method="post" >\';
echo \' <input type="button" value="Check" onclick="return click_to_choose_user()" />\';
echo \'</form>\';
?>
我的函数代码是从函数中提取的。php
add_action( \'wp_ajax_my_twitchuser\', \'twitchuser_ajax\' );
add_action( \'wp_ajax_nopriv_my_twitchuser\', \'twitchuser_ajax\' );
function twitchuser_ajax() {
$twitchusername = \'MulloIV\';
echo $twitchusername;
console.log( "it\'s working" );
die();
}
我觉得这是数据的一个问题:属性,我不确定哪些数据要发送到服务器,以及用于什么。
最合适的回答,由SO网友:Marcos Rodrigues 整理而成
1) 您的功能正常吗
首先执行a
console.log( "it\'s working" );
并在浏览器控制台上进行检查。如果单击时没有显示,则必须重构函数。
2) 您是否定义了ajaxurl
与管理端不同,ajaxurl javascript全局不会自动为您定义,除非您安装了BuddyPress或其他依赖Ajax的插件。因此,与其依赖全局javascript变量,不如使用自己的属性ajaxurl声明一个javascript命名空间对象。
如果不是,则必须硬编码url(不推荐),或者可以使用wp_localize_script()
PS:您可以使用console.log()
太多了
3) 你必须die();
[不是你,而是函数=)]
就像@iEmanuele所说的,你必须
die();
在每个函数结束时,您的ajaxcall
4) Ajax用于登录和注销用户,另一件事是,您只是为未登录的用户启用了Ajaxwp_ajax_nopriv_ 为了能够对登录用户使用脚本,必须添加wp_ajax_
add_action( \'wp_ajax_twitchuser\', \'twitchuser_ajax\' );
add_action( \'wp_ajax_nopriv_twitchuser\', \'twitchuser_ajax\' );
function twitchuser_ajax() {
$twitchusername = \'MulloIV\';
echo $twitchusername;
die();
}
固定:
行动wp_ajax_
和wp_ajax_nopriv_
在这种情况下,在ajax调用中必须后跟action参数twitchuser