1: codex建议在wp\\u enqueue\\u scripts()钩子上嵌入所有脚本和样式。这并不能解决问题,但却是一种良好的做法。
2: 我认为进入php函数的所有数据都封装在$\\u POST中。由发送。ajax调用。因此,看起来除了操作名称之外,您没有发送任何数据,也没有正确解码PHP文件中的数据。
我会开始改变:
function pfxconversion () {
echo "bacon"; exit();
}
只是为了确保您正在与ajax功能对话。不过,这一部分在我看来是正确的。
正在发送什么类型的信息?一些表单数据?您需要将其序列化并将其包含在ajax调用中。
jQuery(文档)。就绪(函数(){
jQuery("#convert").click(function () {
jQuery.ajax({
type: "POST",
url: MyAjax.ajaxurl,
data: action=\'pfxconversion&bacon=hellyes\',
success: function(data){
jQuery(\'#results\').show();
//Put received response into result div
jQuery(\'#results\').html(data);
}
});
});
然后在php端,我们可以获得如下post数据:
function pfxconversion () {
$data = $_POST;
echo $data[\'bacon\'];
exit();
}
理论上,这应该呼应我们之前设定的“是的”。
您可能正在发送一个表单,在这种情况下,您将附加$(“#formID”)。像这样序列化()
var formdata = $(\'#formID\').serialize();
那么ajax调用中的数据行如下所示:
data: formdata + \'action=pfxconversion\',
由于您没有发布您试图发送的信息类型(HTML),我没有继续这样做,但希望您能从我的示例中得到要点。
编辑:
所以我看了一下管理ajax。php,您可以看到两件事。首先,如果用户未登录,它将尝试运行
do\\u action(\'wp\\u ajax\\u nopriv\\u.$\\u请求[\'action]);
如果您登录,则不会触发此操作。。。。我在我的本地安装上测试它。
因此,为了确保这对登录和注销的用户都有效,我们需要将该操作添加到wp\\u ajax\\u和wp\\u ajax\\u nopriv_
其次,零响应意味着它管理ajax。php检查了自己的所有切换案例,没有找到任何操作。
default :
do_action( \'wp_ajax_\' . $_GET[\'action\'] );
die(\'0\');
break;
endswitch;
这就是代码的结尾。。。。对我们来说,这意味着它找不到动作名称。
因此,我做了一些调整,现在得到了回应:
jQuery(document).ready(function() {
$("#convert").click(function () {
var formdata = $(\'#conversionform\').serialize();
$.ajax({
type: "POST",
url: MyAjax.ajaxurl,
data: \'action=pfxconversion&\' + formdata,
type: \'POST\',
cache: false,
success: function (resp) {
console.log(resp);
},
error: function (err) {
console.log(err);
}
});
return false;
});
});
在php方面:
add_action( \'wp_ajax_nopriv_pfxconversion\', \'pfxconversion_callback\' );
add_action( \'wp_ajax_pfxconversion\', \'pfxconversion_callback\' );
function pfxconversion_callback () {
print_r($_POST);
exit();
}
应该显示控制台中表单中的值数组。。。这意味着您现在正通过ajax成功地与回调函数进行对话。
ps-您可以在表单中添加带有操作的隐藏输入。
<input type="hidden" name="action" value="pfxconversion" />
然后它将由serialize()自动拉入,您不需要在中连接字符串。ajax调用
//编辑
function add_my_scripts(){
wp_enqueue_script( \'pfxconversion\', plugin_dir_url( __FILE__ ) . \'function.js\', array( \'jquery\' ) );
wp_localize_script( \'pfxconversion\', \'MyAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
}
add_action(\'wp_enqueue_scripts\',\'add_my_scripts\');