gpt4 book ai didi

javascript - 尝试拉取 xml/json

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

尝试通过 API 从文件中提取前 15 个单词时遇到问题。我已经尝试过 XML 和 JSON,但似乎仍然收到此错误:

XMLHttpRequest cannot load

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我正在使用We feel fine API .

这是我的代码:

 <script type="text/javascript">
(function() {
var WeFeelAPI = "http://api.wefeelfine.org:8080/ShowFeelings?display=json&returnfields=feeling,conditions&limit=15";

$.getJSON( WeFeelAPI,function (json){
var feel = json.results[15];
console.log('Our feelings : ', feel);
});

})();
</script>

任何帮助将不胜感激,我对这一切都很陌生,谢谢

最佳答案

阅读 We Feel Fine API,它们似乎不支持 JSONP,甚至据我所知不支持 JSON。

阻止您调用它的问题称为同源策略。它可以防止一个域向另一个域发出非法请求,因为它会带来安全问题。您可以在这里阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript

JSONP(带填充的 JSON)是网站解决此问题的一种方法,方法是将响应加载到外部脚本,然后触发回调函数来验证响应内容。这实际上提供了有关 SOP 和 JSONP 的良好信息:http://www.codeproject.com/Articles/42641/JSON-to-JSONP-Bypass-Same-Origin-Policy .

不幸的是,您使用的 API 看起来不支持 JSONP,因此需要代理方法。有一种聪明/有创意/可能是黑客(意见)的方法,使用一种称为雅虎查询语言(YQL)的东西。 YQL 允许您使用 Yahoo 的查询服务作为“代理”来执行 x 域请求。您将带有类似 SQL 查询的请求传递给它,Yahoo 将处理 JSONP 方法。您可以在这里阅读:http://developer.yahoo.com/yql/ (抱歉让大家阅读。)

现在用一些代码来演示这一点。请注意用于检索 XML 的 QUERY 以及必须对其进行编码以供 URI 使用的事实:

(function () {
var url = 'http://api.wefeelfine.org:8080/ShowFeelings?display=xml&returnfields=feeling,conditions&limit=15'
// using yahoo query
var query = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + url + '"') +
'&format=json&callback=?';

// make request via YQL and show data
$.getJSON( query, function(data) {
console.log(data);
// yql returns "results" in "query" from data
console.log(data.query.results);
});
})();

玩 fiddle :http://jsfiddle.net/Ty3y2/

同样的方法实际上可以用于加载 HTML,而且实际上可能用于更多用途。关键是“select * from xml where...”,它告诉它选择在请求的 URL 处找到的 XML 元素内的所有内容。请记住,XML 数据的根有一个 XML 元素。大多数时候,您会将其视为“select * from html where...”,因为典型的 Web 请求返回 HTML,它是根部的 HTML 元素。

我已经在几个项目中使用了这种方法,尽管我的大多数项目都通过 PHP 或 C# 使用代理。但是,我在这方面取得了很好的成功,当您不想/不需要为其组合代理时,它很有用。

关于javascript - 尝试拉取 xml/json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187797/

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