Wordpress Ajax请求在chrome中返回0,在FF中正常工作

时间:2017-09-10 16:41:47

标签: php ajax wordpress

我有一个前端Ajax调用设置,可以在按下按钮时随机化图像。我把它设置如下:

的functions.php

function parallax_randomize(e)
{
    var data = {
        'action':   'randomize_parallax',
        'dataType': 'json'
    };
    console.log(theme_vars.ajax_url);
    jQuery.post(theme_vars.ajax_url, data, function(response) {
        console.log(response);
        var dynb = JSON.parse(response);

        jQuery('#front-location span').html(dynb.location);

        jQuery('.parallax-slider').fadeOut('fast', function () {
            jQuery('.parallax-slider').attr('src', dynb.url);
            jQuery('.parallax-slider').fadeIn('fast');
        });
    });
}

root.js

class Dynb
{
    function Dynb() 
    {
        ...

        $this->set_up_ajax();

        ...
    }

    public function set_up_ajax()
    {
        add_action('wp_ajax_randomize_parallax', array($this, 'randomize_parallax'));
    }

    public function randomize_parallax()
    {
        $data = set_dynamic_background(true);
        echo json_encode($data);

        wp_die();
    }
}
new Dynb();

动态背景回调

// Generate a version 3 (name-based and hashed with MD5) UUID object
$uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net');
$uuid = $uuid3->toString();

在Firefox中,这很好用,但在Chrome中,我的JS Ajax调用返回0.我不能为我的生活找出问题所在。任何人吗?

2 个答案:

答案 0 :(得分:0)

只需在randomize_parallax()函数中添加exit(),我认为它会解决你的问题

答案 1 :(得分:0)

从前端发送ajax请求时,如果您希望这样做,则需要包含具有wp_ajax_nopriv_ ...(如下所示)的操作。如果您不添加该操作,则未登录的用户将无法调用ajax功能。

add_action('wp_ajax_nopriv_randomize_parallax', array($this, 'randomize_parallax'));