Я исправил свой серверный код с помощью recaptcha, я проверил, правильно ли это, и это так. Но если я хочу добавить код ajax / javascript, он возвращает ложное сообщение со стороны сервера, в то время как, если я непосредственно выполняю действие = "file.php" внутри формы, это успешно выполняется. Я сейчас пытаюсь решить это, но безуспешно.
Вот код JavaScript:
document.getElementById("mybtn").addEventListener("click", function(){
"use strict";
document.getElementById("my_form").className="submitted";
});
function _(id){ "use strict";return document.getElementById(id);}
function submitForm(){
var response = grecaptcha.getResponse();
if (!response) {
document.getElementsByClassName("status-error")[0].innerHTML = "<span style='font-size:15px;color:red;'>" + "Please check ReCaptcha" + "</span>";
return;
}
_("mybtn").disabled = true;
_("status").innerHTML = 'One moment please ...';
var formdata = new FormData();
formdata.append( "n", _("n").value );
formdata.append( "e", _("e").value );
formdata.append( "mn", _("mn").value );
formdata.append( "m", _("m").value );
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
if(this.readyState === 4 && this.status === 200) {
alert(this.responseText);
}
}
ajax.open( "POST", "file.php", true);
ajax.send('recaptcha=' + response + formdata );
}
И без корректировки recaptcha к коду javavascript он работал раньше так:
<code>document.getElementById("mybtn").addEventListener("click", function(){
"use strict";
document.getElementById("my_form").className="submitted";
});
function _(id){ "use strict";return document.getElementById(id);}
function submitForm(){
"use strict";
_("mybtn").disabled = true;
_("status-eng").innerHTML = 'One moment please ...';
var formdata = new FormData();
formdata.append( "n", _("n").value );
formdata.append( "e", _("e").value );
formdata.append( "mn", _("mn").value );
formdata.append( "m", _("m").value );
var ajax = new XMLHttpRequest();
ajax.open( "POST", "contactform-eng.php" );
ajax.onreadystatechange = function() {
if(ajax.readyState == 4 && ajax.status == 200) {
if(ajax.responseText == "success"){
_("my_form").innerHTML = '<h2>Thankyou '+_("n").value+'. Your message has been sent successfully. We will respond to your message as soon as possible.<pre>Have a nice day!
';
} еще {
_ ("статус"). innerHTML = ajax.responseText;
_ ("mybtn"). disabled = false;
}
}
};
ajax.send (formdata);
}
И я почти забыл, если я просто поместил if if с сообщением succes и неудачным сообщением внутри функции с recaptha в javascript, он показывает succes, так что это что-то с частью ajax, я думаю
Итак, чтобы прояснить ситуацию, это не php-файл, код javascript, возвращающий сообщение FALSE, которое находится внутри file.php в if (!$res['success'])
... И он прекрасно работает без кода javascript, так что это что-то с кодом JS (код формы <form id="my_form" onsubmit="submitForm(); return false;">
с ключом внутри формы и все). Может ли кто-нибудь помочь мне с этим, пожалуйста?
Заранее спасибо.