【问题标题】:AJAX in WordPress Template Not Working in WordPress Plugin ClassWordPress 模板中的 AJAX 在 WordPress 插件类中不起作用
【发布时间】:2019-11-17 03:07:16
【问题描述】:

我想知道在插件类和模板中是否需要为 AJAX 调用做不同的事情。

以下代码在主题模板中运行良好。但是,我将其移至插件中。此代码当前在一个类中,我收到 400 错误,不知道为什么。它在一个地方而不是另一个地方工作似乎很奇怪。我一定错过了 WordPress 插件类和主题的一些东西。

任何帮助或建议都会很棒!谢谢。 '''

    function echoPowerAJAX_javascript() {
        $adminAJAX =  admin_url('admin-ajax.php');  
    ?>
    <script type="text/javascript" language="JavaScript">
    jQuery(document).ready(function($) {    
        jQuery(function($) {
            $( "select[id=slctAddPowers]" )  
                .change(function( event ) {
                    var s = $(this).val();
                    var disc = $(this).prev().val();
                    var prevDiv = $(this).next('#PowerPreviewContainer');
                    if (s == '') {
                        //hide preview
                        $(prevDiv).html('<div class="alert alert-info">Select a Power from the drop down to display details here.</div>').fadeTo('fast');
                    } else {
                        $(prevDiv).html('<i class="fa fa-spinner fa-pulse fa-2x"></i>').fadeTo('fast');

                        //dPowerPreviewContainer.innerHTML = '<i class="fa fa-spinner fa-pulse fa-2x"></i>';
                        var ajaxurl = <?php echo json_encode($adminAJAX); ?>;
                        console.log('ajaxurl = ' + ajaxurl);                
                        var data = {
                                    action: 'echoPowerAJAX',
                                    powerID: s,
                                    pDetail: 3                          
                                   };
                        console.log("data = ");
                        console.log(data);              
        //            //WP ajax call
                        var tmessage = 'Adding some text here and whatever....';

                        $.post(ajaxurl, data)
                          .done(function( data, success ) {
                            //alert( "Data Loaded: " + data );
                            var pwrHTML = $.parseJSON(data);
                            $(prevDiv).html(pwrHTML).fadeTo('fast');
                          });
                    }
          });
      });
    });
    </script>

    echoPowerAJAX_javascript();
    ?>

'''

现在这一切都在 ob_start() 部分中。如果我将函数移到 ob_start 之外,仍然不起作用。

【问题讨论】:

    标签: php ajax wordpress class plugins


    【解决方案1】:

    我忘记将请求的实际 AJAX PHP 添加到插件中。一旦进入,我收到了 200 响应,但仍然有错误。我需要更改 AJAX PHP 中的函数以引用新函数的类,然后它开始工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多