Успешно на стороне сервера php recaptcha, но возвращает false через javascript / ajax? - PullRequest
0 голосов
/ 30 июня 2018

Я исправил свой серверный код с помощью 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;"> с ключом внутри формы и все). Может ли кто-нибудь помочь мне с этим, пожалуйста?

Заранее спасибо.

1 Ответ

0 голосов
/ 30 июня 2018

Попробуйте добавить ответ к отправляемому объекту:

formdata.append("recaptcha", response); ajax.send( formdata );

...