我正在嘗試製作自定義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