Javascript 第二次提交时提交两次reCAPTCHA表格
我正在使用reCAPTCHA v2创建一个表单,并希望该表单能够在不重新加载页面的情况下再次提交。当我第一次提交表单时,它按预期工作。但是,当我在不重新加载页面的情况下再次提交表单时,我的CaptchaValidate函数将被调用两次,首先返回false,然后返回true。为什么会这样?任何帮助都会很好,谢谢 HTML 控制器Javascript 第二次提交时提交两次reCAPTCHA表格,javascript,c#,jquery,ajax,recaptcha,Javascript,C#,Jquery,Ajax,Recaptcha,我正在使用reCAPTCHA v2创建一个表单,并希望该表单能够在不重新加载页面的情况下再次提交。当我第一次提交表单时,它按预期工作。但是,当我在不重新加载页面的情况下再次提交表单时,我的CaptchaValidate函数将被调用两次,首先返回false,然后返回true。为什么会这样?任何帮助都会很好,谢谢 HTML 控制器 [HttpPost] public async Task<string> GetCaptchaData(string dataToken) { Htt
[HttpPost]
public async Task<string> GetCaptchaData(string dataToken)
{
HttpClient httpClient = new HttpClient();
string secretKey = "mySecretKey";
var res = httpClient.GetAsync("https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response=" + dataToken).Result;
if (res.StatusCode != HttpStatusCode.OK)
return "false";
string JSONres = res.Content.ReadAsStringAsync().Result;
dynamic JSONdata = JObject.Parse(JSONres);
if (JSONdata.success != "true")
return "false";
return "true";
}
[HttpPost]
公共异步任务GetCaptchaData(字符串dataToken)
{
HttpClient HttpClient=新HttpClient();
字符串secretKey=“mySecretKey”;
var res=httpClient.GetAsync(“https://www.google.com/recaptcha/api/siteverify?secret=“+secretKey+”&response=“+dataToken”)。结果;
if(res.StatusCode!=HttpStatusCode.OK)
返回“false”;
字符串JSONres=res.Content.ReadAsStringAsync().Result;
动态JSONdata=JObject.Parse(JSONres);
if(JSONdata.success!=“true”)
返回“false”;
返回“真”;
}
尝试使用e.停止即时复制()代码>
它会停止执行其余的事件处理程序
function onSubmit(response) {
$('#form').submit(function (e) {
e.preventDefault();
e.stopImmediatePropagation(); // new line
const formData = $(this).serializeArray();
$.ajax({
url: '/Home/CaptchaValidate',
type: 'POST',
dataType: 'text',
data: { dataToken: response },
success: function (resultData) {
if (resultData == 'true') {
//do something
}
else {
$('.error-message').html('could not submit form');
}
},
error: function (err) {
console.log(err);
}
})
}).submit();
grecaptcha.reset();
}
您好,由于某些原因,在第二次提交时,它最初返回false,但应该返回true。所以我想知道为什么它返回false,以及如何防止它。如果页面在提交后刷新,那么它将再次正常工作,但在不刷新的情况下,其行为会有所不同。
[HttpPost]
public async Task<string> GetCaptchaData(string dataToken)
{
HttpClient httpClient = new HttpClient();
string secretKey = "mySecretKey";
var res = httpClient.GetAsync("https://www.google.com/recaptcha/api/siteverify?secret=" + secretKey + "&response=" + dataToken).Result;
if (res.StatusCode != HttpStatusCode.OK)
return "false";
string JSONres = res.Content.ReadAsStringAsync().Result;
dynamic JSONdata = JObject.Parse(JSONres);
if (JSONdata.success != "true")
return "false";
return "true";
}
function onSubmit(response) {
$('#form').submit(function (e) {
e.preventDefault();
e.stopImmediatePropagation(); // new line
const formData = $(this).serializeArray();
$.ajax({
url: '/Home/CaptchaValidate',
type: 'POST',
dataType: 'text',
data: { dataToken: response },
success: function (resultData) {
if (resultData == 'true') {
//do something
}
else {
$('.error-message').html('could not submit form');
}
},
error: function (err) {
console.log(err);
}
})
}).submit();
grecaptcha.reset();
}