Как проверить входное значение jQuery / AJAX во внешнем php-файле и вернуть результат обратно? - PullRequest
1 голос
/ 20 июля 2011

У меня есть переменная captcha из ввода в моей форме.

В моем файле JavaScript у меня есть это:

  var captcha = $("input#captcha").val();
                    $.ajax({
                            type: "GET",
                            url: "includes/process.php",
                            data: captcha,
                            success: function() {

                              alert('Captcha is OK');

                            }
                          });

В моем файле process.php у меня есть это:

<?php

// Begin the session
session_start();

// To avoid case conflicts, make the input uppercase and check against the session value
// If it's correct, echo '1' as a string
if(strtoupper($_GET['captcha']) == $_SESSION['captcha_id'])
    echo 'true';
// Else echo '0' as a string
else
    echo 'false';

?>

И моя проблема в том, что он всегда проходит нормально, независимо от того, что я ввожу на ввод. Как я могу, например, Вернитесь к моему файлу, содержащему JavaScript, значение captcha_id , чтобы я мог проверить его, например. использовать оповещение в JavaScript?

Я думаю, что мой php-файл неправильный, потому что независимо от того, что я печатаю в мою капчу (я проверил это с помощью alert (captcha); после var captcha = $ ("input # captcha"). Val (); и это предупреждает правильное значение.

Итак, я предполагаю, что успех: ... часть ошибочна

или

часть сравнения php в process.php. Что нужно вернуть для успешного выполнения части ajx?

Спасибо за любой совет.

решено! хотя бы для меня;)

Это работает для меня:

$.ajax({
                                type: "GET",
                                url: "includes/process.php",
                                data: "captcha=" + captcha,
                                success:function(data){
                                    if(data=='true')
                                    alert("OK");

                                else
                                alert("not ok");

                                }
                          });

process.php остается нетронутым.

Спасибо вам всем, вы мне очень помогли.

Ответы [ 3 ]

4 голосов
/ 20 июля 2011

Я верю, что ваш Ajax-вызов неверен:

data:{captcha:yourValueFromYourInput}

Тогда у вас на сервере $_GET['captcha']=yourValumeFromYourInput

1 голос
/ 20 июля 2011

Функция успеха будет вызвана, как только ответ ajax станет доступен. В вашем случае это либо правда, либо ложь. Итак, вы должны проверить, что:

success: function(response) {
    if (response == 'true' )
        // captcha valid
    else
        alert ('wrong');
}
0 голосов
/ 20 июля 2011

вы не перехватываете ответ от сервера при успешном обратном вызове

success:function(data){
if(data=='true')
alert("OK");

else
alert("not ok");

}

также вам может потребоваться отправить data в вашем вызове ajax как

data:{captcha:captcha},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...