我想在我的MVC的網站使用reCAPTCHA,但它不驗證,除非我從一個表單提交,就像這樣:提交數據VS數據從阿賈克斯
@using(Html.BeginForm("VerifyCaptcha", "Signup"))
{
@ReCaptcha.GetHtml(theme: "clean", publicKey: "6LcnfAITAAAAAAY--6GMhuWeemHF-rwdiYdWvO-9");
<input type="submit" id="btnVerify" value="Verify" />
}
[HttpPost]
public ActionResult Index(PolicyModel model)
{
var result = ReCaptcha.Validate(privateKey: "THE_KEY");
return View();
}
我不不想使用表單提交,因爲我不想返回新的視圖。我所有的數據都以json形式被ajax推送。我想要做的是:
$.ajax({
url: 'verifyCaptcha',
dataType: 'json',
contentType: "application/x-www-form-urlencoded",
type: "POST",
async: false,
success: function (response) {
alert(response);
},
error: function(response) {
alert('There was a problem verifying your captcha. Please try again.');
}
});
return valid;
[HttpPost]
public ActionResult VerifyCaptcha()
{
var result = ReCaptcha.Validate(privateKey: "THE_KEY");
return Json(result);
}
AJAX調用獲取到控制器,但驗證方法立即完成,彷彿它甚至沒有得到提出要求。我不確定爲什麼驗證總是失敗,如果驗證碼不在表單中 - 它是否會丟失信息,如公鑰或什麼?有沒有解決這個問題的方法?
編輯:添加了沒有模型的ajax控制器操作方法。
更改按鈕類型爲按鈕,並在您的ajax分配一個有效的網址,在您的按鈕單擊事件 – 2015-02-23 13:16:11
內寫入ajax,所以你在你的ajax代碼中設置'type:'POST''?讓你的代碼處於完成狀態,更容易幫助你 – sabotero 2015-02-23 13:22:21
ok,你的ajax請求到達'Action'或者沒有? – sabotero 2015-02-23 13:23:41