0

我正在尝试从 Json 对象中获取一些数据。

为了尝试这一点(我对这一切仍然很陌生),我尝试从两个不同的功能齐全的 URL:s 获取数据。

使用 pebble 教程中的 URL 时一切顺利,但是当我从其他站点尝试时,它根本不起作用。如果我使用第二个 URL,就好像我的代码中的 Ajax 语句甚至不会被执行。

注意:我一次只使用一个 URL。

由于最后一个 URL 包含我的私钥,我不能在这里发布它。相反,我可以发布 json 对象。

以下是关于我的简单项目的一些信息: 我使用 Cloudpebble 作为编辑器,该项目的类型为 pebble.js

正常工作的 Json 对象:

{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"破云"," icon":"04d"}],"base":"stations","main":{"temp":294.2,"pressure":1023,"humidity":64,"temp_min":292.15,"temp_max": 295.93},"visibility":10000,"wind":{"speed":6.2,"deg":70},"clouds":{"all":75},"dt":1439384430,"sys":{ "type":1,"id":5089,"message":0.0189,"country":"GB","sunrise":1439354486,"sunset":1439407710},"id":2643743,"name":"伦敦","鳕鱼":200}

功能不全的 Json 对象:

{ "LocationList":{ "noNamespaceSchemaLocation":"hafasRestLocation.xsd", "StopLocation":[{ "idx":"1", "name":"Blåsut (斯德哥尔摩)", "id":"300109187", " lat":"59.287913", "lon":"18.089955", "dist":"1" },{ "idx":"2", "name":"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();
}
);
4

2 回答 2

0

再次您好,感谢您的帮助!

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

为了调用 API,您需要在 URL 的 fromt 中添加http://。我使用的 API 没有在他们的文档中写入http//,因此没有从他们的服务器获得任何信息。

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

于 2015-08-15T12:46:48.813 回答
0

看起来您正在尝试从另一个站点加载数据。

通常 ajax 只允许从它自己的站点加载数据(准确地说,从它自己的“域”)。但是,如果从另一个域加载,将涉及一种称为CORS的技术。关于 CORS 有几条规则 - 请参阅此处的文档,但基本上,是否可以通过 ajax 从另一个域访问 URL 是由服务器决定的。

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

于 2015-08-12T14:18:53.267 回答