2

サーバー上の PHP スクリプトから JSON でエンコードされた文字列を取得する、Phonegap で使用する Javascript で作成しているアプリがあります。

クロスドメインリクエストの場合、Javascript で PHP からこの JSON エンコード文字列を取得することは可能ですか?

私が現在使用しているのは、jQuery AJAX を介して文字列を取得する Yahoo の YQL です。

4

2 に答える 2

3

Cross Domain GET の場合、エンドポイントを所有している場合は、JSONPを使用するように変更することをお勧めします

ブラウザー<script>タグは異なるドメインからスクリプトを読み込むことができるため、クロス ブラウザーのサポートについてほとんど心配することなく、クロス ドメインの問題を回避する 1 つの方法です。クロスサイト スクリプティングの問題が発生する可能性があります (上でリンクした wiki ページを読むことをお勧めします)。

を使用すると、 JSONP API 呼び出しを作成するのは非常に簡単ですが、タグを自分でjQuery動的に挿入し、API エンドポイントに属性を設定し、呼び出しが成功したときに呼び出される独自のコールバック関数を作成することで、厳密な JavaScript を使用しても十分に簡単です。 .<script>src

パラメーターを受け取るようにサーバー エンドポイントを変更しcallbackます。json 応答をコールバックでラップします。

例 (実際のコードではない)

//example api url
//http://tempuri/apiendpoint?callback=foo 

//example url handler (not in PHP)
app.get('/apiendpoint',function() {
  return query.callback + '({"json": "value"});'
});

JSONP をサポートしたくない場合は、Cross Origin Resource Sharing (CORS) を有効にすることができます。iOS と Android の両方の Web ブラウザーがサポートしています。CORS のサポートを追加するには、適切なヘッダーを送信するようにエンドポイントを変更する必要があります。

'Access-Control-Allow-Origin'
'Access-Control-Allow-Methods'
'Access-Control-Allow-Headers'
于 2012-11-04T23:52:42.860 に答える
0

ACD (AJAX Cross Domain) と呼ばれる Perl スクリプトがありますが、これは私が過去に使用して成功したものです。ここで確認してください。最良の部分は、外部サービスに依存する必要がないことです。

それはこのように動作します:

<script type="text/javascript" src="http://my-domain.com/cgi-bin/ACD/ACD.js?uri=(http://www.google.com)"></script>
<script type="text/javascript">
 alert(ACD.responseText); //Should alert the source of google.com
</script>
于 2012-11-04T23:46:35.717 に答える