我使用歐芹實現了一個多步表單,我需要驗證一個recaptcha。 第一個問題是,recaptcha是由函數recaptcha_get_html($ publickey)生成的,所以我無法在輸入元素中手動添加屬性。不過我解決了使用.attr()上的window.onload()如下:香菜遠程Recaptcha驗證
window.onload = function() {
$("#recaptcha_response_field").attr('data-parsley-group','block1');
$("#recaptcha_response_field").attr('data-parsley-required','true');
$("#recaptcha_response_field").attr('data-parsley-remote-message','Wrong Captcha');
$("#recaptcha_response_field").attr('data-parsley-remote','lib/validateRecaptcha.php');
};
要完成我需要傳遞到PHP文件中的兩個字段中的驗證:recaptchaChallengeField和recaptchaResponseField。
正如我所說,這是一個多步驟的形式...所以驗證表格我有這個邏輯附加到「下一步」按鈕,我添加了數據,香菜遠程選項如下:
$('.next').on('click', function() {
var current = $(this).data('currentBlock'),
next = $(this).data('nextBlock');
$("#recaptcha_response_field").attr('data-parsley-remote-options','{"type": "POST", "dataType": "jsonp", "data": {"recaptchaChallengeField": "'+$("#recaptcha_challenge_field").val()+'", "recaptchaResponseField": "'+$("#recaptcha_response_field").val()+'"}}');
// only validate going forward. If current group is invalid, do not go further
// .parsley().validate() returns validation result AND show errors
if (next > current)
if (false === $('#signup-form').parsley().validate('block' + current))
return;
// validation was ok. We can go on next step.
$('.block' + current)
.removeClass('show')
.addClass('hidden');
$('.block' + next)
.removeClass('hidden')
.addClass('show');
});
正如你所看到的,recaptchaResponseField是動態的...每當用戶按下「下一步」按鈕時,我都會捕獲該值。
這裏是我的PHP代碼:
require_once('recaptcha-php-1.11/recaptchalib.php');
$privatekey = "private_key";
$resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptchaChallengeField"], $_POST["recaptchaResponseField"]);
if (!$resp->is_valid)
echo json_encode("404");
else
echo json_encode("200");
的問題是,它沒有做任何事情......我不打字的ReCaptcha輸入內東西的時候得到任何錯誤消息。 有什麼問題? 我已經嘗試使用parsley.remote.js(.addAsyncValidator),但沒有任何反應,因爲... 我需要一些幫助。 Thx
沒有人可以幫助我嗎? =/ – dan 2014-08-31 21:42:40
您在'data-parsley-remote-options'屬性中使用''dataType「:」jsonp「'。我假設請求是對同一個域進行的,所以你應該改爲'json'。另外,您需要提供一些額外的細節:請求是否成功(您是否在控制檯中看到它)?如果你'var_dump($ _ POST)'它包含你的值除外? – 2014-09-01 17:04:10