我正在尝试制作自定义captcha生成器。简而言之,服务器通过AJAX返回一个图像的URL,并保持会话存储与图像的关联。这是为什么返回0?
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一定有什么问题。
你看了你的浏览器的开发工具,看看Ajax请求实际返回什么? –
而不是提醒,尝试'console.log(animalUrl);'可能更适合输出结果。 – Chris
在函数中声明'$ capmap'是全局的 - 也就是说:'global $ capmap;' – RamRaider