荫试图让插件如下因素对WP插件在线科西嘉。问题与阿贾克斯的WordPress插件
荫具有与该插件(其电子邮件列表生成器)的AJAX部分严重的困难。
这是我的.js jQuery代码是应该运行在本地主机的一些PHP代码和一个警报窗口显示成功/错误信息:
jQuery(document).ready(function($){
var wpajax_url = document.location.protocol + '//' + document.location.host + 'wordpress_plugin_course/wp-admin/admin-ajax.php?action=plb_save_subscribtion';
$('form.plb-form').bind('submit', function(){
$form = $(this);
var form_data = $form.serialize();
$.ajax({
'method':'post',
'url':wpajax_url,
'data':form_data,
'dataType':'json',
'cache':false,
'success':function(data, textStatus){
if(data.status == 1){
$form[0].reset();
alert(data.message);
} else{
var msg = data.message +'\r'+ data.error + '\r';
$.each(data.errors,function(key,value){
msg += '\r';
msg += '- ' + value;
});
alert(msg);
}
},
'error':function(jqXHR, textStatus, errorThrown){
}
});
return false;
});
});
PHP的一部分(是的,订阅新用B在这是故意的,因为我在这方面遇到了问题,并且我决定在所有情况下都坚持B)。
add_action('wp_ajax_nopriv_plb_save_subscribtion', 'plb_save_subscribtion');
add_action('wp_ajax_plb_save_subscribtion', 'plb_save_subscribtion');
add_action('wp_enqueue_scripts', 'plb_public_scripts');
function plb_public_scripts(){
wp_register_script('profi-list-builder-js-public', plugins_url('/js/public/profi-list-builder.js', __FILE__), array('jquery'),'1.0',true);
wp_enqueue_script('profi-list-builder-js-public');
}
荫没有显示plb_save_subscribtion功能,因为它的数百共行的代码和代码工作正常:它节省订阅新的在管理方面的订阅后,并在随后返回successs /错误消息。 json格式发送给客户端。
我所需要的jQuery现在要做的就是通过AJAX做这个帖子,并把同样的plb_save_subscribtion响应客户端进入的警告窗口。
我literaly整天都在谷歌上搜索,试图解决这个问题,但都无济于事。 Iam出于想法,所以Iam在这里张贴。这段代码有什么问题吗?如果没有,我应该在哪里寻找问题(因为代码是复制/粘贴的,应该可以正常工作,但它不会)?如果我在该函数的顶部放置一个简单的警报消息,则警报消息将显示为它应该显示的内容。但是当我在表单上按提交时,页面重新加载,我在.json中返回消息,没有警报窗口,没有ajax。有人?
这不是因为你复制/粘贴代码将运行。你如何排队jQuery文件,并运行一个wp_ajax_youraction以使其适用于管理网址?如果你得到了json错误,那么你正处于错误关闭状态。 – Benoti
我认为** action = plb_save_subscribetion **应该是** action = plb_save_subscription **(但也许拼写错误与动作一致)。实际上,没有服务器部分的AJAX请求问题并没有真正描述。 –