4

ドメイン「example1.com」でページを作成し、別のドメイン「example2.com/json.json」で JSON ファイルを取得/解析したいと考えています。json ファイルを javascript で生成できますか (example2.com)? これはphpでもできると思いますが、javascriptでやりたいです。javascript で json ファイルを生成できない場合、javascript ファイルからオブジェクトを取得/解析することは可能ですか? 例: 「example1.com」から「example2.com/js.js」

編集: わかりました。クライアント側であるため、javascript ファイルからオブジェクトを取得/解析することはできません。したがって、私の唯一のオプションは、JSON ファイルを生成することです。Javascriptでそれを行うことは可能ですか? おそらく最善の方法ではないことはわかっていますが、PHPではなくJSで実行したいと考えています。

4

4 に答える 4

2

json は単なる文字列形式の JavaScript オブジェクトであるため、JavaScript は json データを作成できます。

   var animal = {name: "cat", sound: "meow"};
   json = JSON.stringify(animal); //json is a JSON string

javascript では、セキュリティ上のリスクがあるため、他のサイトへの ajax 呼び出し (クロスサイト スクリプティング) を許可していません。このルールの回避策である jsonP を調べることができます。

また、javascript はクライアントのブラウザーでのみ実行されるため、別の Web サイトまたは独自のサーバーを呼び出して javascript を実行して何かを返すことはできません (node.js などの JavaScript サーバーを使用している場合を除く)。サーバーはどこかでリクエストをリッスンしている必要があります。

于 2013-04-10T01:32:08.620 に答える
1

JSON オブジェクトを JavaScript で解析するには、jQuery を使用します。

http://api.jquery.com/jQuery.parseJSON/

anthonybell が言ったように、ほとんどのブラウザーはクロスサイト スクリプティングを許可していないため、jsonP を調べるか、同じドメインで作業する必要があります。

また、JSON を生成するには、JavaScript を使用してオブジェクトを作成し、それをループして出力するか、ここで読むことができる JSON 形式でデータを出力することができます:
http://www.w3schools.com/json/

于 2013-04-10T01:39:57.417 に答える
0

PHP を JavaScript に置き換えることはできません (NodeJS などを使用していない限り)。

PHP を使用して JSON を生成すると、JSON がクライアントに返されます。

Javascript で JSON を生成すると、Javascript がクライアントに返されます。あなたがそうしているなら、JSONを使っても意味がありません。

静的な JSON ファイルの代わりに (サーバー上のデータ ソースから) JSON ドキュメントを生成したい場合は、何らかのサーバー側プログラミングが必要になります。

JavaScript を使用する場合は、NodeJS (および Web サーバーなどの他のサービス、または NodeJS でサーバーを作成する) をインストールして構成し、JSON を生成して提供するスクリプトを作成する必要があります。

JSON を生成するスクリプトを作成する (およびそれをホストする基本サーバーを作成する) ことは、それほど難しくありません。ノードのインストールと構成は、より困難になる可能性があります。

サーバー上の PHP (および Web サーバー) に既にアクセスできる場合は、それを使用します。

出力ファイル (および実行中のウィンドウ) を静的にできる場合は、JScript を使用して静的ファイルを生成できます。これには、スクリプトを物理的に実行する必要があります (または、スケジュールされたタスクを作成して実行する必要があります)。したがって、静的ファイルを新しく生成された JSON に頻繁に置き換えることになります。おそらくあなたが望むものではないでしょう!

于 2013-04-10T01:39:48.793 に答える
0

JSONP を使用できます。基本的に、次のように domain2.com のコールバック関数で JSON をラップします。

jsonCallback(
    {
        "sites":
        [
            {
                "siteName": "JQUERY4U",
                "domainName": "http://www.jquery4u.com",
                "description": "#1 jQuery Blog for your Daily News, Plugins, Tuts/Tips & Code Snippets."
            },
            {
                "siteName": "BLOGOOLA",
                "domainName": "http://www.blogoola.com",
                "description": "Expose your blog to millions and increase your audience."
            },
            {
                "siteName": "PHPSCRIPTS4U",
                "domainName": "http://www.phpscripts4u.com",
                "description": "The Blog of Enthusiastic PHP Scripters"
            }
        ]
    }
);

次に、次のように domain1.com から呼び出すことができます。

(function($) {
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';

$.ajax({
   type: 'GET',
    url: url,
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       console.dir(json.sites);
    },
    error: function(e) {
       console.log(e.message);
    }
});

})(jQuery);
于 2013-04-10T01:38:34.363 に答える