gpt4 book ai didi

javascript - recaptcha 返回 200,使用 jQuery ajax 仍然出现错误

转载 作者:行者123 更新时间:2023-11-28 06:23:51 24 4
gpt4 key购买 nike

我的所有其他搜索都会产生有关跨域请求的响应。看来我对此没有问题。我从 recaptcha 服务器收到响应,但它没有被正确解释。

<script>
function verifyCaptcha() {
jQuery.ajax({
method: "POST" ,
url: "https://www.google.com/recaptcha/api/siteverify",
data: { secret: "xxxxxxxxxxxxxxxxxxx" , response: "<% $recaptcha_response %>" },
dataType: 'jsonp' ,
success: function( result ) {
alert( result.success ) ;
},
error: function( xhr ) {
alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' Response Text: ' + xhr.responseText);
}
})
}
onload=verifyCaptcha ;
</script>

该函数位于提交表单的目标页面中。当我检查 fireBug 的结果时,我在警报消息中收到以下内容:

Request Status: 200 Status Text: success Response Text: undefined

FireBug 捕获的响应是

{
"success": true
}

如果没有括号包裹返回的 JSON,它似乎会变得很疯狂,我认为返回的 JSON 应该随 dataType: 'jsonp'

一起释放

如何解决这个问题?

更新

向错误函数添加额外的返回参数:( xhr , message , errorThrown ) 产生以下结果:

Request Status: 200
Status Text: success
Response Text: undefined
Message: parsererror
ErrorThrown: Error: jQuery1120043068059910713263_1455115913634 was not called

我猜测 jQuery1120043068059910713263_1455115913634 was not called 消息是 jQuery 随机命名的回调函数。这是否意味着我需要在逻辑中添加一些内容,或者 reCaptcha 服务器确实不支持 jsonp ?

dataType 设置为 "json" 会得到请求状态 0。

更新2

我将其添加到我的函数中:

jsonp: false,
jsonpCallback: 'onJSONPLoad',

我的errorThrown文本更改为:错误:未调用 onJSONPLoad 这使我得出结论,reCaptcha 不支持 jsonp。谁能证实这一点?

最佳答案

我猜答案是:

jsonp 不支持 POST 方法,只能使用 GET

更新:

以及在评论中指出将 dataType 设置为“json”,它会自动转换为 jsonp,也许可以尝试一下

您还可以向错误函数添加第三个参数

error: function( xhr, message, errorThrown ) {

而 errorThrown 可能更明确

关于javascript - recaptcha 返回 200,使用 jQuery ajax 仍然出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com