Ajax response is always 0

时间:2012-10-25 作者:dkmojo

我试图弄明白为什么我的Ajax响应总是0。我试图根据点击链接的ID将元数据加载到Jquery UI对话框中。所有这些都是在一个单一的。php模板文件-不确定这是否是原因。

这是我的代码(为空格编辑):

            jQuery( \'#meta-dialog-box\' ).dialog({
            width: "500px",
            autoOpen: false,
            show: "blind",
            hide: "explode",
            resizeable: false,
            draggable: false,
            modal: true,
            position: "center",
            closeText: "X",
            dialogClass: "co-meta-dialog-wrapper"
        });

        jQuery(\'a.co-meta-dialog\').click(function(){
            var id = $(this).attr(\'id\');
            var taxonomy = id.replace("co-","");
            taxonomy = taxonomy.replace("-dialog","");
            var title = $(this).text();
            jQuery( "#meta-dialog-box" ).dialog( "option", "title", title );
            jQuery( "#meta-dialog-box" ).dialog( "open" );
            jQuery( "#meta-dialog-box" ).html( \'<img width="62px" height="62px" style="margin:0 auto;" src="<?php bloginfo(\'template_directory\');?>/images/loading.gif" alt="loading..." />\' );             

            //$( "#meta-dialog-box" ).html(\'Meta Dialog Box For: \' + id);

            switch( id ){
                case \'co-location-dialog\':
                    dialog_action = \'show_co_location_dialog\';
                break;

                case \'co-contact-dialog\':
                    dialog_action = \'show_co_contact_dialog\';
                break;

                //and so on....

                default:
                break;
            }//end switch

            jQuery.post(            
                UiAjax.ajaxurl,
                {
                    action : dialog_action,
                    postid: \'<?php echo $postid; ?>\',
                    tax: taxonomy
                },          
                function( response, data, status ) {
                    jQuery(\'#meta-dialog-box\').html(response);
                    //alert(data + \' \' + status);
                }
            );
            return false;           
        });
我已经检查了Firebug,我的操作正在正确完成。因此,我的PHP回调似乎没有正确启动。我所有的回调PHP函数都有die();在他们的最后。并设置为打印元数据。我试着回音并返回,但仍然没有成功。

我的函数中包含所有ajax操作。php文件如下:

//location|address
add_action(\'wp_ajax_show_co_location_dialog\', array(\'DS_Lingerie\',\'get_dialog_address\') );
//contact info 
add_action(\'wp_ajax_show_co_contact_dialog\', array(\'DS_Lingerie\',\'get_dialog_contact_info\') );
我是否需要设置一个插件来执行此操作?还是我完全错过了什么?我已经把头撞在墙上6个小时了,弄不清楚我到底做错了什么。

非常感谢您的帮助!我可能需要重新考虑如何进行设置,可能需要使用不同的模式/对话框功能或类似的功能。欢迎提出建议和见解!提前谢谢。

1 个回复
SO网友:kaiser

不能从公共模板添加AJAX调用。

必须更早地添加它们,通过调用的文件是admin-ajax.php 原因是:Ajax调用不能隐藏在admin之外。例如,将您的通话包装在内! is_admin() 会让它失败

结束

相关推荐

在基于自定义查询的模板上实现基于AJAX的分页的最佳方式是什么?

我们可以使用多个插件(如wp pagenavi或wp paginate)来实现wordpress站点的分页,并使用以下代码使其基于ajax:jQuery(document).ready(function(){ // ajax pagination jQuery(\'#wp_page_numbers a\').live(\'click\', function(){ var link = jQuery(this).attr(\'href\')