1

mysql データベースの php クエリから出力される json データを取得するモバイル アプリを構築しようとしています。これは私がこれを行ったのは初めてなので、単純な例を試して動作させるだけでした。同じドメインにいるときはすべて問題ないように見えますが、クロスドメインフェッチで json-p を機能させるのに問題があります。同じドメイン コードは次のとおりです。

<html>
<head>
<title>the title</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
  $.getJSON('example.json', function(staff) {
         document.write(staff.name);
      });
});

</script>

</head>
<body>
</body>
</html>

これはうまく機能しますが、example.json を別のドメインに移動してテストすると、機能しなくなります。?callback=? を追加しました。さまざまなチュートリアルで読んだように、URLの最後までですが、何もロードしていません。1 行を次のように変更しました。

$.getJSON('http://www.knoxyouthgroup.org/example.json?callback=?', function(staff) {

ここから先が分からず、壁にぶち当たります。初心者の質問で申し訳ありませんが、助けていただければ幸いです。

私たちの最終的な目標は、ホストしている json データからモバイル アプリを構築することです。データは非常にシンプルで最小限ですが、独自にホストできるものですか? 私はRESTサービスなどについて読み続けていますが、これがphpスクリプトを作成してjsonにダンプして1日と呼ぶことができるものかどうかはわかりませんか?

皆さんありがとう!

4

1 に答える 1

0

JSONP はプレーンな JSON とは異なる動作をします。クライアントとサービスの両方が動作するためのルールに準拠する必要があります。

  1. クライアント JQuery.getJSON を使用して、「callback=?」を指定します。JSONP 呼び出しを行っていることを JQuery に通知します。http://api.jquery.com/jQuery.getJSON/を参照してください。

  2. サービス サービスは、応答 JSON をコールバック関数でラップすることにより、JSONP 呼び出しを正しく処理する必要があります。次の形式で応答を返す必要があります。

      <callback-function> ( <JSON-payload> )
    

例: callback({name:"JONES",position: "役員"})

サービスが を返すだけの場合、クライアントは暗黙のうちに失敗します。

あなたのサービスは JSONP に準拠していないと思われます。ローカル (JSON) 呼び出しとリモート (JSONP) 呼び出しの両方を処理するように書き直してください。

于 2012-12-10T00:12:38.090 に答える