我正在嘗試使用google的reCaptcha在表單驗證中處理驗證碼。基本上,我使用form標籤中的onSubmit調用了我的驗證函數,然後調用第二個函數與recaptcha api一起工作。即使一切似乎都正確,Ajax帖子總是會導致錯誤
下面的代碼:
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,狀態= 0,狀態文本= 「錯誤」}
textStatus是 「錯誤」,並errorThrown是 「」
I」我嘗試了很多方法,包括$ .POST,並使用.done(),.fail(),.always(),它總是表現相同。
我見過其他一些帖子,這裏有與跨域請求有關的問題,但這些情況都沒有真正相關,因爲我實際上正在做一個跨域請求,而那些似乎是他們向同一個域上的文件發出請求的問題,並且作爲跨域請求被錯誤地處理。
我在我的智慧結束在這裏..任何幫助將不勝感激。
你可能不應該在SO問題中發佈你的私鑰。 – jbabey
一個側面說明:'我嘗試了很多方法,包括$ .POST,並使用.done(),.fail(),.always(),它總是表現相同。「那些3種方法的用途與錯誤,成功和完整相同。根據文檔,現在應該在功能上有所不同,除非他們現在更願意準備成功,錯誤和完成將來將被棄用。 – Nope