reCAPTCHA ajax验证ReferenceError:未定义成功

时间:2014-08-06 14:19:46

标签: html ajax recaptcha

当我将ajax调用发布到reCAPTCHA验证API时,我收到错误消息。我在正确输入时出现“ReferenceError:success is not defined”错误,并且在错误插入CAPTCHA时出现“ReferenceError:not defined not defined”。这是我的代码:

$.ajax({
                        type: 'POST',
                        contentType: "application/json",
                        dataType: 'jsonp',
                        url: "http://www.google.com/recaptcha/api/verify",
                        data: {
                            privatekey: 'XXXXXXXXXXXXXXXXX',
                            remoteip: document.getElementById("ipaddress").innerHTML,
                            challenge: Recaptcha.get_challenge(),
                            response: Recaptcha.get_response()
                        },
                        async: false,
                        success: function (resp) {
                            if (resp == "false") {
                                alert('Please enter captcha words correctly');
                                reloadRecaptcha();
                            }
                            else {
                                alert('Yeah');
                            }
                        }
                    });

1 个答案:

答案 0 :(得分:1)

我通过将发布数据发送到页面控制器来解决我自己的问题。 JS:

$.ajax({
            type: 'GET',
            contentType: "application/json",
            url: "/Register/veriCAPTCHA",
            data: {
                privateKey: 'XXXXXXXXXXXXXXXX',
                remoteip: document.getElementById("ipaddress").innerHTML,
                challenge: Recaptcha.get_challenge(),
                response: Recaptcha.get_response()
            },
            success: function (data) {
                if (data == false) {
                    valiCAPTCHA = false;
                    ALERT("The CAPTCHA code you entered is invalid. Please try again.");
                    Recaptcha.reload();
                }
                else {
                    valiCAPTCHA = true;
                }
            }
        });

CS控制器:

[HttpGet]
    public JsonResult veriCAPTCHA(string privateKey, string remoteip, string challenge, string response)
    {
        string postData = String.Format("privatekey={0}&remoteip={1}&challenge={2}&response={3}",
                              privateKey, remoteip,
                              challenge, response);
        JsonResult result = new JsonResult();
        byte[] postDataBuffer = System.Text.Encoding.ASCII.GetBytes(postData);

        Uri serviceUri = new Uri("http://api-verify.recaptcha.net/verify", UriKind.Absolute);
        try
        {
            HttpWebRequest webRequest = (HttpWebRequest)System.Net.WebRequest.Create(serviceUri);
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.ContentLength = postDataBuffer.Length;
            webRequest.Method = "POST";

            //incase you are using a proxy server
            IWebProxy proxy = WebRequest.GetSystemWebProxy();
            proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
            webRequest.Proxy = proxy;

            Stream requestStream = webRequest.GetRequestStream();
            requestStream.Write(postDataBuffer, 0, postDataBuffer.Length);

            HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
            string jsonResponse = string.Empty;

            using (StreamReader sr = new StreamReader(webResponse.GetResponseStream()))
                jsonResponse = sr.ReadToEnd();

            string[] tokens = jsonResponse.Split(new char[] { '\n' });
            if (tokens.Length == 2)
            {
                return Json(false, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(false, JsonRequestBehavior.AllowGet);
            }
        }
        catch (Exception ex)
        {
            return Json(false, JsonRequestBehavior.AllowGet);
        }
    }