0

私はあちこちを検索しましたが、JavaScriptやPHPだけで(同じサーバー/ディレクトリに)JSONファイルをインポートするための包括的なチュートリアルや説明は見つかりませんでした。ライブラリを使用する方が良いことは知っていますが、ライブラリを使用せずにそれを行う方法を知りたいです。

.jsonファイルに次のものがあるとしましょう

{
   "customers":[
   {"name":"Joe Smith","age":"36"},
   {"name":"Jane Doe","age":"27"}
   ]
}

それをスクリプトに効果的に取り込み、そのデータを使用するにはどうすればよいですか?

4

2 に答える 2

5

Ajaxを使用しない簡単な方法は、ファイルの内容をPHPからjavascript変数にエコーすることです。JSONはJavascriptのオブジェクトと同じ構造を使用するため、データを変数として直接使用できます。

var myData = <?php echo file_get_contents('path/to/file.json'); ?>;

// 2
console.log(myData.customers.length);

これは、データが有効なJSONであることを前提としていることに注意してください。また、ファイルのソースが信頼できることを確認してください。これにより、ドキュメントのコンテキストで何でも実行できるようになります。

于 2013-03-07T18:40:43.983 に答える
2

データを動的に取得する場合は、XMLHttpRequest(テキストを要求するため)とJSON.parse(テキストを解析するため)の組み合わせを使用します。

function getData(url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open(url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status == 200) {
                callback(JSON.parse(xhr.responseText));
            }
            else {
                callback(null); // Or something to indicate failure
            }
        }
    };
    xhr.send();
}

// usage
getData("/path/to/your/file", function(data) {
    if (data === null) {
        // Handle the error
    }
    else {
        // Use `data` here
    }
});

さて、ライブラリが登場する場所:

  • 一部の古いブラウザはサポートしておらずnew XMLHttpRequest、さまざまな方法でXHRオブジェクトを作成する必要があります。ライブラリは、それを処理することで、そこで役立ちます。

  • 一部の古い(そしてそれほど古いものではない)ブラウザーはJSON.parseまだネイティブにサポートされていないため、シムが必要になる場合があります。DouglasCrockfordのgithubページでいくつか見つけることができます。しかし、繰り返しになりますが、まともなライブラリがそれを処理します。

于 2013-03-07T18:41:18.983 に答える