我正在尝试从Json对象中获取一些数据。
为了尝试这一点(我还是新手)我试图从两个不同的对接全功能URL获取数据:s。
当使用pebble教程中的URL时,一切顺利,但是当我从其他网站尝试时,它根本不起作用。就像我使用第二个URL时,我的代码中的Ajax语句甚至都没有被执行。
注意:我一次只使用一个网址。
由于最后一个URL包含我的私钥,我无法在此处发布。相反,我可以发布json对象。
以下是关于我的简单项目的一些信息: 我使用Cloudpebble作为编辑器,项目类型为pebble.js
正常运作的Json对象:
{ “坐标”:{ “LON”: - 0.13, “LAT”:51.51}, “天气”:[{ “ID”:803, “主”: “云”, “描述”:“破 云”, “图标”: “04D”}], “基”: “站”, “主”:{ “温度”:294.2, “压力”:1023, “湿度”:64, “temp_min”:292.15, “temp_max”:295.93}, “可见性”:10000, “风力”:{ “速度”:6.2, “DEG”:70}, “云”:{ “所有”:75}, “DT”:1439384430” SYS “:{” 类型 “:1,” ID “:5089,” 消息 “:0.0189,” 国家 “:” GB “ ”日出“:1439354486, ”日落“:1439407710}, ”ID“:2643743,”命名 “:” 伦敦”, “鳕鱼”:200}
功能不全的Json对象:
{ “LocationList”:{ “noNamespaceSchemaLocation”: “hafasRestLocation.xsd” “StopLocation”:[{ “IDX”: “1”, “名字”:“Blåsut(斯德哥尔摩)”, “ID”: “300109187”, “LAT”: “59.287913” “LON”: “18.089955” “DIST”: “1” },{ “IDX”: “2”, “名字”:“Sandsborg(斯德哥尔摩)”, “ID”: “300109186”, “LAT”: “59.284830” “LON”: “18.089631” “DIST”: “342” }] } }
我的代码:
var UI = require('ui');
var ajax = require('ajax');
var URL = '<THE URL>';
// Get data
ajax(
{
url: URL,
type: 'json'
},
function(data) {
// Success!
console.log("Successfully fetched weather data!");
// Show to user
var card = new UI.Card({
title:'It is',
subtitle:'working fine'
});
card.show();
},
function(error) {
// Failure!
console.log('Failed fetching weather data: ' + error);
// Show to user
var card = new UI.Card({
title:'Does not work',
subtitle:'at all'
});
card.show();
}
);
答案 0 :(得分:0)
您似乎正在尝试从其他网站加载数据。
通常只允许ajax从自己的网站加载数据(准确地说,来自它自己的&#34;域&#34;)。但是,如果从其他域加载,则会涉及名为CORS的技术。 有几个关于CORS的规则 - 请参阅document here,但基本上,ajax是否可以从另一个域访问URL是由服务器决定的。
问题的原因可能是,第一个URL与加载脚本的页面位于同一个域中,或者,如果第一个URL位于另一个域中,则服务器允许CORS访问。对于第二个URL,服务器不允许CORS访问。
答案 1 :(得分:0)
再次问好,谢谢你的帮助!
这对我来说确实很尴尬,但解决方案非常简单:
要调用API,您需要在网址中添加 http:// 。我正在使用的API没有在他们的文档中写入 http // ,因此没有从他们的服务器获得任何内容。
希望我的错误和解决方案能够帮助其他人在开发使用cloudpebble时遇到同样的问题。