我正在为Wordpress中的客户端开发自定义主题。
我正在进行AJAX调用,检索文档加载的一些数据,但是虽然这在Chrome中有效,但它会在Firefox和IE的主页上重定向,并继续循环播放AJAX请求。
打开Firefox控制台,我可以看到此错误:
未捕获的异常:内存不足
这个警告:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助http://xhr.spec.whatwg.org/
$(document).ready(function(){
var container = $('#single-path-content');
var parentId = container.data('parent');
if(container.length > 0){
ajax_main(parentId, 0);
}
});
// fred_vars.ajaxurl is defined in functions.php a console.log of this variable is "http://fred.locl/wp-admin/admin-ajax.php"
function ajax_main(parentId, start){
$.ajax({
url: fred_vars.ajaxurl,
type: 'POST',
data: 'action=fred_subpath&parent_id='+parentId+'&start='+start,
beforeSend: function(){
// SOME jQuery code
},
success: function(results){
$('#single-path-content')
.html(results);
// SOME jQuery code
},
error: function(){
alert('Error! Please reload');
},
complete: function(){
// SOME jQuery code
}
});
}
在页面模板中呈现主页之前,浏览器会在错误函数中显示警报。
答案 0 :(得分:0)
问题出在一个插件中,其中包含以下代码,用于将非登录用户重定向到主页。
function mksm_disable_subscriber_dashboard() {
if ( is_admin() && ! current_user_can( 'edit_posts' ) ) :
wp_redirect( esc_url( home_url( '/' ) ) );
exit;
endif;
}
代码也限制了对{AJ}工作所需的functions.php
admin_url( 'admin-ajax.php' )
请求的访问权限。
解决方案是修改代码:
function mksm_disable_subscriber_dashboard() {
if ( ( is_admin() && ! current_user_can( 'edit_posts' ) ) && ! defined( 'DOING_AJAX' ) ) :
wp_redirect( esc_url( home_url( '/' ) ) );
exit;
endif;
}