Файл PHP, который открывается с помощью AJAX. Предоставьте предупреждение Captcha и отправьте URL-данные.

Сижу над этим уже целый день, верите или нет :) Хочу передать данные через GET-Method во внешний .jsp файл (example.com/data.php?attribute=value&a2=v2 и тд)

Кажется, все это работает до сих пор, а также проверка. Теперь у меня проблема: у меня есть капча, которая генерируется php-файлом, и капча контролируется/проверяется в PHP-файле, в который отправляются данные HTML-формы.

Когда все в порядке, я могу сделать предупреждение в submitHandler (успех: функция (ответ)) но как я могу получить предупреждение сейчас, если капча неверна?

Как я могу это решить? Могу ли я получить переменную значения oder через AJAX обратно из файла PHP, чтобы что-то с ней сделать (для отображения предупреждения)?

Буду очень рад любой помощи или комментариям.

Спасибо!

ЗДЕСЬ данные проверяются и отправляются в файл PHP после успешной проверки.

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">
(function($,W,D)
{
    var JQUERY4U = {};
    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            $("#form-id").validate({
                rules: {
                    firstname: "required",
                    .........
                },
                messages: {
                    firstname: "Please enter your firstname",
                    ..........
                },
                submitHandler: function(form)
                    var data = $("#nachricht").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"nachricht.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    alert('Thank you!');
                        }
                    });
                }
            });
        }
    }
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });
})(jQuery, window, document);

ФАЙЛ PHP: здесь данные передаются на другой URL (метод GET) и проверяется капча

$email = urlencode($_POST['email']);
$name = urlencode($_POST["name"]);
....

session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["captchafield"] == $_SESSION['captcha_spam']) // Captcha korrekt
{
    unset($_SESSION['captcha_spam']);

$link = "http://www.example.com/data.jsp?email=" . $email . "&name=" . $name . $titel . "&text=" . $text . "&ranking=" . $ranking . "&captchafield=" . $captcha_s;

header( "refresh:0;url=" . $link);
exit;
....

person Jobo21    schedule 04.02.2015    source источник
comment
Почему вы делаете обновление в php?   -  person Tamás Szabó    schedule 05.02.2015
comment
Вы имеете в виду заголовок ()? Это я использую для отправки данных через GET в jsp-файл на другом сервере.   -  person Jobo21    schedule 05.02.2015
comment
да. Я делаю. Зачем это нужно?   -  person Tamás Szabó    schedule 05.02.2015
comment
Для передачи данных на другой сервер. Сначала я хотел использовать cURL, но у меня нет доступа к серверу с jsp-файлом, и я не смогу получить отчет об ошибке, если он не работает. Итак, теперь я передаю данные через AJAX в файл PHP и вручную открываю URL-адрес с GET-переменными на нем. Спасибо за ваши ответы!   -  person Jobo21    schedule 05.02.2015
comment
И что он делает в этом контексте? Это перенаправит запрос ajax в файл jsp?   -  person Tamás Szabó    schedule 05.02.2015
comment
Нет, AJAX-запрос не должен перенаправляться, он просто существует для того, чтобы данные формы обрабатывались (и отправлялись в jsp-файл) без ухода пользователя со страницы. И в файле PHP капча проверяется, поэтому мне нужно понять, как вернуть информацию, если капча введена неправильно.   -  person Jobo21    schedule 05.02.2015
comment
Тогда просто повторите что-нибудь. Я имею в виду if(... captcha ok...) then echo Success; иначе эхо не удалось; И проверьте параметр ответа в успешном действии.   -  person Tamás Szabó    schedule 05.02.2015
comment
У меня уже есть условие if, но проблема в том, что оно не отображается. $_POST[captchafield] == $_SESSION['captcha_spam']) Captcha correkt { ... правильно } else { echo failed .. }   -  person Jobo21    schedule 05.02.2015
comment
Вы должны справиться с этим на стороне javascript.   -  person Tamás Szabó    schedule 05.02.2015
comment
То есть вы имеете в виду, что между проверкой всех полей и отправкой запроса AJAX должна быть проверка Captcha? Как я могу включить это в javascript? С другим AJAX-запросом?   -  person Jobo21    schedule 05.02.2015
comment
Нет, нет, ты неправильно меня понял. Можете ли вы вставить, пожалуйста, все ваши php? или если он длинный, то только оператор проверки капчи, а остальное   -  person Tamás Szabó    schedule 05.02.2015
comment
В файле PHP, который открывается после отправки формы, находится только содержимое PHP сверху, а затем .. echo ..success..; } еще { эхо ... сбой ..; }. В капча-PHP-файле создается сессия и строка капчи. Или что вы имеете в виду? Спасибо за помощь   -  person Jobo21    schedule 05.02.2015
comment
Если php работает хорошо, и капчу проверяет, и идет еще и в jsp файл, и запускает его, то его можно не трогать. В javascript у вас есть success: function( response ) ответ, который пришел из php, поэтому, например... успех... вы можете проверить это. и предупреждающее сообщение по значению response   -  person Tamás Szabó    schedule 05.02.2015
comment
Итак, когда я делаю в PHP-файле, например: if(enteredcaptcha == captcha){ $captcha_correct = true; } еще { $captcha_correct = false; } как я могу проверить это в ответе и выполнить alert()?   -  person Jobo21    schedule 05.02.2015
comment
Это никак. Но если вы сделаете echo captcha_correct; если успех, то вы можете проверить это в javascript следующим образом: if( response == captcha_correct ) alert(Success); еще { оповещение (неуспех ..); }   -  person Tamás Szabó    schedule 05.02.2015


Ответы (1)


Итак, теперь у меня есть в моем файле PHP, куда отправляется форма:

if(enteredcaptcha == captcha){
echo "<script type='text/javascript'> alert('captcha_correct');</script>";  
} else { 
echo "<script type='text/javascript'> alert('captcha_not_correct');</script>";  
}

и в моем обычном файле HTML, где есть форма и Javascript, у меня есть:

submitHandler: function(form) {
                    var data = $("#kommentar").serializeArray();
                    $.ajax({
                    type:"POST",
                    url:"kommentar.php",
                    data: data,
                    dataType: "text",
                    success: function(response) {
                    if( response == "captcha_is_correct" ){ alert("Success"); } else { alert("unsuccess.."); }
                        }
                    });

                }

И это действительно имеет смысл, замечательно, но я всегда получаю сообщение «не удалось», поэтому я думаю, что все еще есть какая-то ошибка?

person Jobo21    schedule 04.02.2015