MVC3: Как проверить recaptcha с Ajax или напрямую с JS? - PullRequest
0 голосов
/ 24 января 2012

Я хотел бы проверить управление recaptcha через Ajax.

$(document).ready(function () {
    $('#submit').click(function () {
        $.ajax({
            url: '/Competition/CheckForm',
            type: "POST",
            data: ????,
            success: function (data) {
                alert(data);
                return false;
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
                return false;
            }
        });
    });
});

Моя проблема в том, как я могу передать данные рекапчи в свой ActionResult.

@ReCaptcha.GetHtml(publicKey: "publicKey")

Вот мой ActionResult:

[HttpPost]
public ActionResult CheckForm(???)
{
    if (ReCaptcha.Validate(privateKey: "privateKey"))
    {
    }
    return Json();
}

У кого-нибудь есть идея, как я могу проверить recaptcha с Ajax?

Это легко с PHP ... там у вас есть возможность проверить данные с помощью функции ("recaptcha_check_answer" из "recaptchalib.php")

ТИА!

1 Ответ

2 голосов
/ 24 января 2012

Попробуйте подписаться на событие отправки формы, чтобы AJAXify его:

$(document).ready(function () {
    $('#myForm').submit(function () {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (data) {
                alert(data);
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
            }
        });
        return false;
    });
});

Но если вы хотите, чтобы AJAX отправлял данную форму при нажатии на какой-либо элемент, кроме его кнопки отправки, вы также можете сделать следующее:

$(document).ready(function () {
    $('#someButton').submit(function () {
        var myForm = $('#myForm');
        $.ajax({
            url: myForm.attr('action'),
            type: myForm.attr('method'),
            data: myForm.serialize(),
            success: function (data) {
                alert(data);
            },
            error: function (jqXhr, textStatus, errorThrown) {
                alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
            }
        });
        return false;
    });
});
...