2

さまざまなドメインでホストされるスクリプトを作成する必要があります。このスクリプトは、サーバーから情報を取得する必要があります。

そのため、stackoverflowのユーザーから、JSON-P形式を使用する必要があると言われました。これは、調査後、これから行うことです。(JSON-Pで提供されるデータは、他のWebサイトのサーバーでホストされている情報を表示するためのものです)

  1. サーバーからJSON-Pを出力するにはどうすればよいですか?json_encodeからの機能と同じですかPHP

  2. 出力JSON-Pのツリーパターンを設計するにはどうすればよいですか(次のように:({"name": "foo"、 "id": "xxxxx"、 "blog": " http://xxxxxx.com " }); XML出力からこれを盗むことはできますか?(http://bit.ly/9kzBDP

  3. 訪問者が私のウィジェットがあるWebサイトを閲覧するたびに、サーバー上でリクエストを行い、JSON-Pデータをクライアント側に表示するようにリクエストします。 CPU負荷が劇的に増加します(スクリプトを持っているWebサイトの1人の訪問者=データを出力するためのサーバー上の1つのSQL要求)ので、JSON-P情報出力を「キャッシュ」して更新する方法はありますか? 1日に1〜2回、それを「ファイル」(どの拡張子で?)に保存します。

しかし一方で、JSON-Pデータを直接(キャッシュせずに)要求することはプラスです。なぜなら、スクリプトを統合するWebサイトは、データ全体ではなく、情報のみを表示したいからです。したがって、次のようなスクリプトを作成します。

jQuery.getJSON("http://www.something.com/json-p/outpout?filter=5&callback=?", function(data) {
................);
});

ここで、 filter =Webサイトが表示したい情報。

  • ボーナス質問:JSON-Pを読み取るためにJSフレームワークを使用する必要がありますか?またはページに含めるフレームワークのない純粋なJSはそれを行うことができますか?

どう思いますか ?

どうもありがとうございます ;)

4

2 に答える 2

2

JSONP リクエスト

$.ajax({
  type: "get",
  dataType: "jsonp",
  url: "mothership.com/widget_data",
  data: {whatever: "here", requested_from: "someonesblog.com" },
  cache: true,
  success: function(data, textStatus, XMLHttpRequest){
    // respond to ajax call here

    // debug: make sure your data is getting loaded properly
    console.log(data);

    // do other necessary things here
  }
});

サーバーから JSON をエンコードして出力する

<?php
  header("Content-Type: application/json");

  # You can access data from the jQuery.ajax() call with $_GET here

  $data = array(
    "name" => "foo",
    "id"   => 1234,
    "blog" => $_GET["requested_from"]
  );
  echo $_GET["callback"] . "(" . json_encode($data). ");" ;

  # this will output something like
  # jsonp1255285823({"name":"foo","id":1234,"blog":"someonesblog.com"});

  exit;
?>
于 2010-04-18T18:34:35.867 に答える
2

この関数を使用してjson_encode、オブジェクトの JSON 文字列表現を取得し、その周囲にパディングを追加できます。つまり、次のようになります。

$json = json_encode($myObj);
echo $callback . "(" . $json . ");";

ほとんどの JSON 構造は、XML 構造と命名規則を厳密にコピーしています。子孫を持たない単一ノードはプロパティになり、繰り返される XML ノードは JSON 配列になり、子孫を持つノードはオブジェクトになります。http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=396を参照して、両方の形式で表現されたデータを並べて表示してください。

サーバーでのデータのキャッシュに関しては、トラフィックがそれほど多くない場合、ほとんどのキャッシュ方法は少しやり過ぎになる可能性があります。私自身の質問の1つに対するこの回答と、それでも必要であると主張している場合は、memcachedを推奨するこの回答を参照してください。クライアント キャッシュ コントロール ヘッダーexpiresを使用して、クライアントが複数のページ/更新にわたってデータを 1 回だけフェッチするようにすることができます。

おまけの答え: JSON-P の優れた点は、解析にライブラリがまったく必要ないことです。形式は純粋な JavaScript であり、JSON-P をページに追加するのは、ページにスクリプトを追加するのと同じくらい簡単です。

<script 
   type="text/javascript" 
   src="http://myurl.com/jsonp.php?callback=test&filter=5">
</script>
于 2010-04-18T18:38:17.163 に答える