0

Json オブジェクトからデータを取得しようとしています。

これを試すために(私はまだこれらすべてに慣れていません)、完全に機能する2つの異なるURLからデータをフェッチしようとしました。

小石のチュートリアルの URL を使用するとすべてうまくいきますが、別のサイトから試していると、まったく機能しません。2 番目の URL を使用すると、コード内の Ajax ステートメントが実行されないようです。

注: 一度に 1 つの URL しか使用していません。

最後の URL には私の秘密鍵が含まれているため、ここに投稿することはできません。代わりに、json オブジェクトを投稿できます。

私の単純なプロジェクトに関する情報 を次に示します。Cloudpebble をエディターとして使用しており、プロジェクトのタイプは pebble.js です。

機能する Json オブジェクト:

{"coord":{"lon":-0.13,"lat":51.51},"weather":[{"id":803,"main":"Clouds","description":"壊れた雲"," icon":"04d"}],"ベース":"ステーション","メイン":{"温度":294.2,"圧力":1023,"湿度":64,"temp_min":292.15,"temp_max": 295.93},"可視性":10000,"風":{"速度":6.2,"度":70},"雲":{"すべて":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":"サンドボーグ (ストックホルム)", "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 にはいくつかのルールがあります。こちらのドキュメントを参照してください。ただし、基本的に、URL が別のドメインから ajax によってアクセスできるかどうかは、サーバーによって決定されます。

おそらく問題の理由は、最初の URL がスクリプトをロードするページと同じドメインにあることです。または、最初の URL が別のドメインにある場合、サーバーは CORS アクセスを許可します。2 番目の URL では、サーバーは CORS アクセスを許可しません。

于 2015-08-12T14:18:53.267 に答える