Wordpress AJAX调用中的问题:未捕获的异常内存不足

时间:2015-12-17 11:55:22

标签: jquery ajax wordpress

我正在为Wordpress中的客户端开发自定义主题。

我正在进行AJAX调用,检索文档加载的一些数据,但是虽然这在Chrome中有效,但它会在Firefox和IE的主页上重定向,并继续循环播放AJAX请求。

打开Firefox控制台,我可以看到此错误:

  

未捕获的异常:内存不足

这个警告:

  

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。如需更多帮助http://xhr.spec.whatwg.org/

这是我的ajax文件

$(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
        }
    });
}

在页面模板中呈现主页之前,浏览器会在错误函数中显示警报。

我找到了一些可能的解决方案,但没有任何适合我的方案。

1 个答案:

答案 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;
}