从两个功能齐全的url中获取json.一个工作得很好,另一个不行



我试图从json对象中获取一些数据。

为了尝试这个(我仍然是新的这一切),我试图从两个不同的,但完全功能齐全的URL:s获取数据。

当使用鹅卵石教程中的URL时,一切都很顺利,但当我从其他网站尝试时,它根本不起作用。这就像我的代码中的ajax语句甚至不被执行,如果我使用第二个URL。

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

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

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

正在运行的Json对象:

{"coord":{"朗":-0.13,"纬度":51.51},"天气":[{" id ": 803年,"主要":"云"、"描述":"破云"、"图标":"04 d"}],"基地":"站"、"主要":{"临时":294.2,"压力":1023年,"湿度":64年,"temp_min":292.15,"temp_max":295.93},"可见性":10000年,"风":{"速度":6.2,"度":70},"云":{"所有":75},"dt":1439384430,"sys":{"类型":1、"id":5089年,"消息":0.0189,"国家":"g","日出":1439354486,"日落":1439407710},"id":2643743,"名称":"伦敦"、"鳕鱼":200}

功能不完全的Json对象:

{" LocationList ": {:"noNamespaceSchemaLocation hafasRestLocation.xsd","StopLocation":[{"idx":"1","名称":"Blasut(斯德哥尔摩)","id":"300109187","纬度":"59.287913","朗":"18.089955","距离":"1"}, {"idx":"2","名称":"Sandsborg(斯德哥尔摩)","id":"300109186","纬度":"59.284830","朗":"18.089631","距离":"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();
}
);

您似乎正在尝试从另一个站点加载数据。

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

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

再次问候,感谢您的帮助!

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

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

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