6

我在 WordPress 中有一个 AJAX 函数,它调用一个 PHP 函数来返回数据库中临时记录的值。

当我使用 jQuery 调用该函数时,我收到了结果,但是它总是在值后面附加了一个额外的 0(零)。

这是我的 jQuery 函数:

(function($) {
    $(document).ready( function() {

        var AdvancedDashboardWidget = function(element, options)
        {
            var ele = $(element);
            var settings = $.extend({
                action: '',
                service: '',
                countof: '',
                query:   '',
                callback:''
            }, options || {});
            this.count=0;
            var url='';
            switch(settings.service)
            {
                case 'facebook':
                    if(settings.countof=='likes' || settings.countof=='talks')
                    {
                        ajaxCall(action,ele,settings);  
                    }
            }
        };

    var ajaxCall = function(action,ele,settings){
        opts = {
            url: ajaxurl, // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php
            type: 'POST',
            async: true,
            cache: false,
            dataType: 'json',
            data:{
                action: settings.action // Tell WordPress how to handle this ajax request
            },
            success:function(response) {
                //alert(response);
                ele.html(response);
                return; 
            },
            error: function(xhr,textStatus,e) {  // This can be expanded to provide more information
                alert(e);
                //alert('There was an error');
                return; 
            }
        };
        $.ajax(opts);
    };


        $.fn.advanceddashboardwidget = function(options)
        {
            return this.each(function()
            {
                var element = $(this);

                // Return early if this element already has a plugin instance
                if (element.data('advanceddashboardwidget')) return;

                // pass options to plugin constructor
                var advanceddashboardwidget = new AdvancedDashboardWidget(this, options);

                // Store plugin object in this element's data
                element.data('advanceddashboardwidget', advanceddashboardwidget);
            });
        };

    });
})(jQuery);

还有更多的辅助函数,但是这是与 WordPress 通信并返回 PHP 函数值的主要 jQuery 函数。

问题是,如果该值返回为“ 99”,例如,它将返回为“ 990

这是 jQuery 调用的 PHP 函数:

/**
* Get Facebook Likes
*/

public function get_facebook_likes(){

    echo 99;
}

如果我将以上内容更改为return 99;我收到纯 0

4

3 回答 3

8

您的函数应使用wp_send_json将 PHP 编码为 JSON 并将其发送回 AJAX 请求处理程序。这也将停止执行任何后续 PHP,因此无需使用 exit 或 die。

因此,对于您的具体示例,您将使用:

/**
* Get Facebook Likes
*/

public function get_facebook_likes(){
   wp_send_json(99);
}
于 2013-06-06T14:05:03.707 回答
1

这是一个老问题,但我要回答这个问题。wp_send_json()功能可能会有所帮助,但并非总是如此。有时您可能无法使用此功能。就像,当您通过 ajax 加载帖子时,您会得到一些模板部分,您可以使用该功能。这就是 WordPress 文档建议使用该die()功能的原因。

所以最后,你的 php 函数应该是这样的:

/**
* Get Facebook Likes
*/

public function get_facebook_likes() {
   echo 99;
   die();
}
于 2015-06-21T04:34:04.637 回答
0

使用 Firebug 并查看实际传输和接收的网络数据。确定错误是来自 javascript 端还是 PHP 端。复制网络请求并将其粘贴到单独的浏览器窗口中以查看原始结果。如果是 PHP,请继续。如果是 javascript 在做某事,请告诉我们。

于 2012-11-23T22:32:16.427 回答