从两个功能完备的URL中获取json。一个工作正常,另一个没有

时间:2015-08-12 13:37:45

标签: pebble-watch cloudpebble pebble-js

我正在尝试从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();
}
);

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试从其他网站加载数据。

通常只允许ajax从自己的网站加载数据(准确地说,来自它自己的&#34;域&#34;)。但是,如果从其他域加载,则会涉及名为CORS的技术。 有几个关于CORS的规则 - 请参阅document here,但基本上,ajax是否可以从另一个域访问URL是由服务器决定的。

问题的原因可能是,第一个URL与加载脚本的页面位于同一个域中,或者,如果第一个URL位于另一个域中,则服务器允许CORS访问。对于第二个URL,服务器不允许CORS访问。

答案 1 :(得分:0)

再次问好,谢谢你的帮助!

这对我来说确实很尴尬,但解决方案非常简单:

要调用API,您需要在网址中添加 http:// 。我正在使用的API没有在他们的文档中写入 http // ,因此没有从他们的服务器获得任何内容。

希望我的错误和解决方案能够帮助其他人在开发使用cloudpebble时遇到同样的问题。