我正在尝试使用谷歌的 reCaptcha 在表单验证中处理验证码。基本上,我的验证函数是在表单标签中使用 onSubmit 调用的,然后调用第二个函数来使用 recaptcha api。
这是代码:
var returnValue;
var myData = {
privatekey : "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
remoteip : ip,
challenge : challenge,
response : response
};
$.ajax({
url: "http://www.google.com/recaptcha/api/verify",
type: "POST",
data: JSON.stringify(myData),
dataType: "text",
success: function(data) {
var result = data.split("\n");
if (result[0] == "true") {
returnValue = true;
}
else {
returnValue = false;
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert("There was an error submitting the captcha. Please contact an administrator. \n\nError:\n" + textStatus, errorThrown);
returnValue = false;
},
complete: function(jqXHR, textStatus) {
return returnValue;
}
});
在 Firefox 中使用 LiveHTTPHeaders,我可以看到请求发送到服务,并且看起来一切都被正确发送。我得到一个 HTTP/1.1 200 OK 响应,但每次代码都进入错误函数。当错误函数运行时,jqXHR 为:
对象 { readyState=0, status=0, statusText="error"}
textStatus 是“错误”,errorThrown 是“”
我已经尝试了多种方法,包括 $.POST,并使用 .done()、.fail()、.always(),它的行为总是相同的。
我在这里看到了一些与跨域请求问题有关的其他帖子,但这些情况似乎都不相关,因为我实际上正在执行跨域请求,而这些似乎是它们所在的问题向同一域上的文件发出请求,并且它被错误地处理为跨域请求。
我在这里束手无策。任何帮助将不胜感激。