0

Web ホストから JSON データを取得する際に問題が発生しました。いいえ、関数を GET google のみに分解しましたが、それでもデータは取得されません。アプリのボタンに以下の関数を追加しました(onclick、false yada yadaを返します):

loadGoogle: function () {

  console.log('Lets load Google!');

  $.support.cors = true;
  $.mobile.allowCrossDomainPages = true;

  $.ajax({
    type: 'GET',
    contentType: 'text',
    url: 'http://google.com'
  })
    .done(function (data) { console.log('GOOGLE IS LOADED'); })
    .fail(function (xhr, error, et) { console.log('GOOGLE WAS NOT LOADED'); });

  console.log('The end');
}

エミュレート中のコンソールの出力:

CommandString : DebugConsole/log/DebugConsole1659732817/"Lets load Google!"
Log:["Lets load Google!","DebugConsole1659732817"]
The thread 0xfb0 has exited with code 259 (0x103).
CommandString : DebugConsole/log/DebugConsole1659732818/"The end"
Log:["The end","DebugConsole1659732818"]
The thread 0xff4 has exited with code 259 (0x103).

ご覧のとおりlog、ajax の前後に AND を出力しますが、doneまたはfailイベント トリガーは出力しません。ご覧のとおり、docに従って cors と allowCrossDomainPages を有効にしました。では、なぜ私はこれに失敗しているのでしょうか。Googleは私が読みたいソースではありませんが、それを機能させることさえできません...

4

3 に答える 3

2

ご覧のとおり、cors を有効にしました...

CORS を有効にするのはあなた次第ではありません(他の人のサイト用)。からデータを取得するにはgoogle.com、CORS を有効にし、オリジンがそれらからデータを抽出できるようにする必要があります*(全員がコンテンツをロードできるようにする場合は、ワイルドカード , があります。)

また、ブラウザーがCORSをサポートしている必要があることにも注意してください。ほとんどのモバイル ブラウザと同様に、すべての最新のデスクトップ ブラウザはそうしていますが、IE8 と IE9 の両方で非標準オブジェクトを使用する必要があることに注意してくださいXDomainRequest。あなたのためのその特定のクロスブラウザの問題について(しませんし、しません)。ただし、それを行うプラグインがあります。XMLHttpRequest

リモート エンド (データを取得している Web ホストなど) を制御している場合は、プリフライト呼び出しに応答GETし、適切な応答ヘッダーを使用して、サーバー レベルで CORS を有効にすることができます。

もっと:

于 2013-08-26T18:23:19.203 に答える