0

外部の JSON データにアクセスする Web アプリを開発しています。現在、jQuery の getJSON を使用してデータを取得し、コールバックを呼び出しています。

自宅のインターネットの調子が悪く、つながらないことが多いです。インターネットに接続していない状態でこのアプリを開発する方法を探しています。

私が最初に考えたのは、スクリプトの場所をローカル ファイルに変更する OFFLINE 変数を設定することでしたが、jQuery の getJSON はコールバックに動的に名前が付けられた関数を使用するため、ある程度のサーバー インテリジェンスが必要になります。

getJSON コールバックの仕組みについて詳しくは、http://docs.jquery.com/Ajax/jQuery.getJSON をご覧ください

もっと簡単な方法があると確信しています。助言がありますか?

**編集**

私は現在、ローカル Web サーバーを実行しています。セキュリティ上の理由から、スクリプト タグはローカル ファイルを参照できません。

現在、次の URL で getJSON を呼び出しています: http://twitter.com/status/user_timeline/user.json?callback= ?

その json 応答をダウンロードしてローカル Web サーバーでホストした場合、コールバック名は毎回変わるため、機能しませんが、フィードには最初にフェッチされた関数名が含まれます。

4

4 に答える 4

1

同様の問題があります。マシンに php/apache/mysql を簡単にインストールするには、xamppを試してください。

私は自分のサイトをホストするためにdreamhostを使用しています。私は Subversion リポジトリですべてを管理しています。これにより、変更を取り込む準備ができたら、ライブ サイトで「svn update」を実行するだけで済みます。

また、http ホストに応じて設定される変数に関連するすべてのパスを定義するbase_urlため、サイトを別の Web サーバーで実行するために何も変更する必要はありません。私は codeigniter を使用しており、構成ファイルは次のようになります。

switch($_SERVER['HTTP_HOST']) {

    case "claytonhp":
        $config['base_url'] = "http://claytonhp/<project_url>";
        break;  

    // etc.
}

JavaScript で同じパスを使用するには、各 html ファイルの先頭に次のコードを追加します。

<script type="text/javascript">
  siteUrl = '<?= base_url();?>';
</script>
<script type="text/javascript" src="<?= base_url();?>public/scripts/external/jquery/jquery.js"></script>                

<!-- Local functionality -->
<script type="text/javascript" src="<?= base_url();?>public/scripts/common.js"></script>
<!-- etc -->

次に、私の jquery ajax 呼び出しは次のようになります。

$.ajax({
        type: "POST",
        url: siteUrl + "index.php/ajax_controller/getSomeData",
        dataType: "json",
        data: "id=5",
        success: successCallback,
        error: errorCallback
   });
于 2009-10-02T05:12:33.043 に答える
0

簡単な解決策は、ローカル Web サーバーを実行することです。これは、あらゆる理由から良い考えです。

それをしたくない場合は、どこかグローバルから JSON を取得する URL を定義し、それを getJSON() に渡します。コードをサーバーに配置する前に、元に戻すことを忘れないでください。

于 2009-10-02T05:11:33.767 に答える
0

ローカルのsinatra Webサーバーを使用し、/etc/hosts ファイルのホストを置き換えました。新しいサービスを定義するのは非常に簡単なので、これは素晴らしいことです。

私は頻繁にホスト ファイルをリセットするのを忘れてしまい、イライラすることがあります。そのため、すべてをラップするスクリプトも作成しました。

これは、Twitter ユーザー フィードを提供する例です。

run.sh

#!/bin/bash
cp /etc/hosts /etc/hosts.original
cat offline_hosts >> /etc/hosts
ruby server.rb -p 80
cp /etc/hosts.original /etc/hosts

offline_hosts

127.0.0.1   twitter.com

サーバー.rb

#!/usr/bin/ruby
require 'sinatra'

# twitter user
# http://twitter.com/status/user_timeline/$USER.json&callback=?
get '/status/user_timeline/:username.json', :host_name => /twitter\.com/ do
  render_file "feeds/#{params[:username]}.json"
end

def render_file filename
  output = File.open(filename).read
  output = "#{params[:callback]}(#{output});" if params[:callback]
  output
end
于 2010-11-13T17:18:59.467 に答える
0

Web サーバーを使用するだけです (IIS は Windows に組み込まれているか、Apache または XAMP を使用します)。そうすれば、常に Web サイトに接続できます ( http://localhost/..を使用します)。

于 2009-10-02T05:09:18.887 に答える