是什么导致前端Ajax请求对某些用户角色不起作用?
我已成功注册(排队)我的。我知道我已经成功注册了ajaxurl,就好像我警告(myhandle.ajaxurl)我看到了管理ajax的正确路径一样。php。
当我以管理员身份登录并转到前端时,Ajax将成功执行。但是,当使用自定义用户角色登录时,它不起作用。。。事实上,我知道它并不是在执行我的PHP文件,应该为Ajax响应调用该文件,就好像我输入了一个错误日志条目,它没有被写入一样。我知道该文件是可用的,但就好像我在文件顶部添加了相同的error\\u日志条目一样(在我的函数之外),它确实会被写入!
有什么明显的地方我可能错过了吗?
下面是正在使用的相关代码片段
//我的主插件类
include( MDJM_CLIENTZONE . \'/includes/mdjm-dynamic.php\' ); // Ajax functions, front & backend
//执行排队的类
function __construct() {
/* -- Hooks -- */
add_action( \'wp_enqueue_scripts\', array( &$this, \'client_zone_enqueue\' ) ); // Styles & Scripts
}
function client_zone_enqueue() {
wp_register_script( \'mdjm-dynamics\', WPMDJM_PLUGIN_URL . \'/client-zone/includes/js/mdjm-dynamic.js\', array( \'jquery\' ) );
}
//mdjm动态。php
function update_addon_options() {
$dj = $_POST[\'dj\'];
$event_package = $_POST[\'package\'];
$addons = mdjm_addons_dropdown( array(
\'name\' => \'event_addons\',
\'dj\' => !empty( $dj ) ? $dj : \'\',
\'package\' => $event_package,
), false );
if( !empty( $addons ) ) {
$result[\'type\'] = \'success\';
$result[\'addons\'] = $addons;
}
else {
$result[\'type\'] = \'error\';
$result[\'msg\'] = \'No addons available\';
}
echo json_encode( $result );
die();
} // update_addon_options
add_action( \'wp_ajax_mdjm_update_addon_options\', \'update_addon_options\' );
add_action( \'wp_ajax_nopriv_mdjm_update_addon_options\', \'update_addon_options\' );
//脚本应执行的页面
wp_enqueue_script( \'mdjm-dynamics\' );
wp_localize_script( \'mdjm-dynamics\', \'mdjmaddons\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
//JS
jQuery(document).ready(function($) {
$(\'#_mdjm_event_package\').on(\'change\', \'\', function() {
var package = $("#_mdjm_event_package option:selected").val();
var dj = $("#event_dj").val();
var addons = $("#event_addons");
$.ajax({
type: "POST",
dataType: "json",
url: mdjmaddons.ajax_url,
data: {
package : package,
dj : dj,
action : "mdjm_update_addon_options"
},
beforeSend: function() {
$("#event_addons").addClass( "mdjm-updating" );
},
success: function(response) {
if(response.type == "success") {
$("#event_addons").removeClass( "mdjm-updating" );
addons.empty(); // Remove existing options
addons.append(response.addons);
}
else {
alert(response.msg);
$("#event_addons").removeClass( "mdjm-updating" );
}
}
});
});
});
另外,我知道我没有检查安全性,一旦当前问题解决,我将添加此内容。
如前所述,这在后端工作,如果以管理员身份登录,也可以在前端工作。只是当以自定义角色的用户身份登录时,情况并非如此。JS在addClass工作和mdjm动态时执行。php文件可用,因为当包含该文件时,我可以从函数外部将msgs发送到php error\\u log