gpt4 book ai didi

javascript - 无法使用 jquery 和 ajax 访问另一个域的有效 json

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

我正在尝试访问某个面向成人的网站的 JSON API,但无法正常工作。这是 jsfiddle:http://jsfiddle.net/SSqwd/这是代码:

$.ajax({url: 'http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?',
dataType: 'json',
success: function(data) {
console.log(data);
}
});

我明白了

未捕获的语法错误:意外的标记:

即使当我自己浏览页面并检查 jsonlint 上的 json 时,它也是完全有效的。

这里出了什么问题?

最佳答案

由于您指定了跨域请求,jQuery 将默认尝试使用 JSONP 请求该 URL,即使您只将数据类型设置为 JSON。所以实际发生的是将以下脚本标记添加到 DOM:

<script src="http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?" type="text/javascript"></script>

(? 实际上被替换为 jQuery 生成的函数名)

然后您的浏览器会尝试执行返回的数据。但是,由于它实际上不是 JSONP 而只是纯 JSON,它返回的是无效的 javascript,因此您会收到语法错误。

您可以通过以下方式重现相同的错误:

<script src="http://api.redtube.com/?data=redtube.Videos.searchVideos&search=sex&thumbsize=big&page=1&output=json&callback=?" type="text/javascript"></script>

什么都不做。或者您可以复制并粘贴来自该 URL 的响应并将其包装在脚本标记中,您将抛出相同的错误。

解决此错误的唯一方法是使用支持 JSONP 的 API 或实现某种代理,通过同一域中您自己的服务器请求数据。

关于javascript - 无法使用 jquery 和 ajax 访问另一个域的有效 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14902575/

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