簡體   English   中英

Wordpress Ajax請求在Chrome中返回0,在FF中可以正常工作

[英]Wordpress Ajax Request returns 0 in chrome, works fine in FF

我設置了前端Ajax調用,以便每當按下一個按鈕時隨機化圖像。 我將其設置如下:

Functions.php

define("AJAX_URL", admin_url('admin-ajax.php'));

add_action("wp_enqueue_scripts", "enqueue_eyewebz_scripts");
function enqueue_eyewebz_scripts() 
{
    wp_enqueue_script("jquery");
    ...
    wp_enqueue_script("root-js", JS_URL . "/root.js", array("jquery"));

    $script_params = array(
        'ajax_url'              => AJAX_URL
    );
    wp_localize_script('root-js', 'theme_vars', $script_params);
}  

root.js

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');
        });
    });
}

動態后台回調

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();

在Firefox中,這很好用,但是在Chrome中,我的JS Ajax調用返回0。我一生都無法找出問題所在。 任何人?

只需在randomize_parallax()函數中添加exit(),我認為它將解決您的問題

從前端發送ajax請求時,如果要執行此操作,則需要包括一個具有wp_ajax_nopriv_ ...的操作(如下所示)。 如果您不添加該操作,則未登錄的用戶將無法調用ajax函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM