Лучший способ сделать капчу с помощью формы Ajax в JQuery? - PullRequest
0 голосов
/ 12 августа 2009

Я работаю над сценарием комментариев, используя ajax, json и jquery.

У меня больше всего сделано, кроме самой сложной части, Если пользователь отправит X количество комментариев в X количество времени, мой скрипт php вернет триггер "captcha" в мой код JavaScript ниже, сообщив, что этот пользователь должен ввести код captcha перед тем, как мы разместим там комментарий в БД.

Ниже вы увидите, что у меня есть 3 варианта возвращаемого значения: success, error и captcha

когда возвращается капча, я хочу открыть всплывающее диалоговое окно на экране и загрузить мой скрипт капчи, пока все работает до этого момента.

Теперь мне нужно сделать так, чтобы скрипт капчи отправлял не только значение капчи, но и комментарии пользователей, поэтому мне просто нужно заполнить скрытое поле формы значением комментария. Достаточно просто, я просто еще этого не сделал. Теперь, если пользователь получит неправильное значение капчи, ему нужно перезагрузить экран, но снова открыть экран капчи и все равно скрыть комментарий в значении формы. Вот тут-то и вступает в хитрость.

После прочтения моего плана и просмотра кода ниже, как вы думаете, я на правильном пути? Любые предложения о лучшем способе?

<script type="text/javascript">
$.ajax({
    type: "POST",
    url: "process.php",
    data: dataString,
    dataType: "json",
    success: function(data) {
       if (data.response === 'captcha') {
            //they are mass posting so we need to give them the captcha form
            // I can send the users sanitized comment through the captcha script somehow
            // 'data.comment' is holding the comment value
            jQuery.facebox(function() {
                // This opens up a facebox dialog on the screen and popolates it with the captcha image and script
                jQuery.get('captchabox.php', function(data) {
                    jQuery.facebox( '' + data + '')
                    data.comment;
                })
            })
       } else if (data.response === 'success') {
            // success append the sanitized-comment to the page
            $('#comments').prepend(data.comment);
       } else if (data.response === 'error') {
            // just an alert for testing purposes
            alert('sorry there was an error');
       };
    }
});
</script>

UPDATE

После долгих раздумий кажется, что мне нужно, чтобы моя капча также использовала ajax, иначе произойдет перезагрузка страницы = (

1 Ответ

0 голосов
/ 25 августа 2009

В итоге я так и сделал, и это прекрасно работает. Напомним, что, черт возьми, другие думали, что это связано, неизвестно

...