通过admin-ajax将函数php中的PHP脚本加载到div...结果为0,而不是所需的内容

时间:2013-06-01 作者:user2304577

我想用手风琴菜单http://wordpress.org/plugins/jquery-vertical-accordion-menu/ 通过基于页面模板加载不同菜单的功能。

更重要的是,我希望将该元素划分为一个轴。下面是函数中的所有脚本。php:

function get_left_menu() {
if (is_page_template(\'page-akademia-biznesu.php\')) {
    echo do_shortcode(\'[dcwp-jquery-accordion menu="Business menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]\');
} elseif (is_page_template(\'page-forum-wiedzy-oze.php\')) {
    echo do_shortcode(\'[dcwp-jquery-accordion menu="OZE menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]\');
} elseif (is_page_template(\'page-o-nas.php\')) {
    echo do_shortcode(\'[dcwp-jquery-accordion menu="About menu" auto_close="true" event="click" save="false" disable="false" count="false" expand="false" disable_class="disabled"]\');
} elseif (is_page_template(\'page-program-ambasadorski.php\')) {
    echo do_shortcode(\'[dcwp-jquery-accordion menu="Ambassador menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]\');
} elseif (is_page_template(\'page-program-edukacyjny.php\')) {
    echo do_shortcode(\'[dcwp-jquery-accordion menu="Aside menu" auto_close="true" event="click" save="true" disable="false" count="false" expand="false" disable_class="disabled"]\');
}
die();
}
add_action("wp_ajax_nopriv_get_left_menu", "get_left_menu");
add_action("wp_ajax_get_left_menu", "get_left_menu");

function reload_menu_via_ajax()
{
 wp_enqueue_script( \'function\', get_template_directory_uri().\'/library/js/menuReload.js\', \'jquery\', true);
 wp_localize_script( \'function\', \'left_menu_reload\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
}
add_action(\'template_redirect\', \'reload_menu_via_ajax\');
这里有jquery ajax脚本(menuReload.js):

jQuery(document).ready(function($) {
$(function() {
    $(\'nav ul li\').click(function() {
        $(\'#left-menu\').empty();
        setTimeout(function() {
            $.ajax({
                method : "POST",
                url : left_menu_reload.ajaxurl,
                data : ( {
                    action : \'get_left_menu()\'
                }),
                success : function(data) {
                    $("#left-menu").html(data);
                }
            });
        }, 2000);
    });
});
});
我不太擅长ajax调用,所以如果这是显而易见的事情,请原谅我。但我最近真的很绝望,请帮帮我。

1 个回复
SO网友:s_ha_dum

那些is_page_template 呼叫将全部为假。AJAX请求是从客户端浏览器向服务器发出的独立请求。就AJAX请求而言,您所在的页面是admin-ajax.php. 您需要在AJAX请求中传递一个参数,以确定要运行哪个短代码。例如:

data : ( {            
    action : \'get_left_menu()\',
    runsc  : \'Business menu\'
}),
此外,您的AJAX操作是get_left_menu(). 应该是这样的get_left_menu 匹配wp_ajax_* 行动。

结束

相关推荐

AJAX分页偏移在相邻页面上返回相同的帖子

我有一个简单的AJAX分页,似乎工作得很好,用pagenum和排序顺序参数调用一个Wordpress页面(我知道这并不理想),每次调用它都会返回4条自定义帖子。我在测试时发现的问题是,如果项目在db中是这样订购的:item1: 4 votes item2: 3 votes item3: 3 votes item4: 3 votes ----page2---- item5: 3 votes item6: 2 votes ... 。。。在自定义