为什么返回0

Why is this returning 0?

本文关键字:返回 为什么      更新时间:2023-09-26

我正在尝试制作一个自定义的captcha生成器。简而言之,服务器通过AJAX返回图像的URL,并在会话存储中保持与图像的关联。

PHP:

add_action( 'wp_ajax_set_animal_captcha', 'set_animal_captcha' );
$capdir = get_template_directory_uri() . '/assets/captcha/';
$capmap = array ( 'cat'  => $capdir . 'Captcha_Cat.png',
                  'dog'  => $capdir . 'Captcha_Dog.png',
                  'fish' => $capdir . 'Captcha_Fish.png' );
function set_animal_captcha ( )
{
    // returns image url of random animal and stores in session storage
    // a reference to that animal
    $randAnimal = array_rand($capmap,1);
    $_SESSION['randAnimal'] = $randAnimal;
    die(json_encode($capmap[$randAnimal]));
}

JS:

function capHandler ( imgid )
{
    // imgid: id of the image 
    this.imgid = imgid;
    this.formData = new FormData();
    this.formData.append('action', 'set_animal_captcha');
    this.set = function ( )
    {
        $.ajax({
            url: ajaxurl,
            type: 'POST',
            async: false,
            success: function ( animalUrl ) { alert(animalUrl); },
            error: function ( ) { alert("Error in getting captcha image") },
            cache: false,
            contentType: false,
            processData: false
        });
    }
}

我的问题是它在提醒

0

我不明白为什么。因为我知道正在调用success函数,所以PHP一定有问题。

为什么要在set_animal_captcha()之外设置$capmap?如果您真的必须将其保持在set_animal_captcha之外,那么将$capmap设置为函数内部的全局。像这样:

function set_animal_captcha ( )
{
    global $capmap;
    // returns image url of random animal and stores in session storage
    // a reference to that animal
    $randAnimal = array_rand($capmap,1);
    $_SESSION['randAnimal'] = $randAnimal;
    die(json_encode($capmap[$randAnimal]));
}

请将以下内容放入返回某个值的语句中:

 die();