web-dev-qa-db-ja.com

JSONをPHPからJSに取得する方法は?

私は実際にほぼ2時間検索してきましたが、JSONデータをPHPからJSに渡す方法の良い例をまだ見つけていません。PHPこれは多かれ少なかれこのように見えるJSONスクリプト(擬似コード)をエコーアウトします。

{
"1": [
  {"id":"2","type":"1","description":"Foo","options:[
    {"opt_id":"1","opt_desc":"Bar"},
    {"opt_id":"2","opt_desc":"Lorem"}],
  {"id":"3","type":"3","description":"Ipsum","options:[
...
"6":
  {"id":"14","type":"1","description":"Test","options:[
...
etc

問題は、JavaScriptでこのデータを取得するにはどうすればよいですか?私の目標は、これらのJSONデータに基づいてポーリングを生成する.jsスクリプトを作成することですが、正直なところ、これを行う方法の例は見つかりません。それは次のようなものだと思います:

Obj jsonData = new Object();
jsonData = $.getJson('url',data,function()){
  enter code here
}

良い例などへのリンクをいただければ幸いです。そして、データをPHPでエンコードするのは難しい部分だと思いました...

編集:

このコードスニペットが機能するようになったので、JSでJSONデータ全体を確認できます。しかし、今では内部データにアクセスする方法がわからないようです。ステージ番号(1〜6)は出力されますが、質問データを取得する方法がわかりません。また、各質問内のオプションデータを取得する方法もわかりません。ネストされた各ループを試す必要がありますか?

$(document).ready(function()
    {       
        $('#show-results').click(function() 
        {
            $.post('JSAAN.php', function(data) 
            {
                var pushedData = jQuery.parseJSON(data);
                $.each(pushedData, function(i, serverData)
                {
                    alert(i);
                })
            })
        })
    });

ここでのアイデアは、中間レベルの質問情報を取得し、質問の説明を印刷してから、質問の種類に基づいて、オプション(存在する場合)をループしてチェックボックス/ラジオボタングループを作成してから、次の質問に進むことです。 。最初の数字は、私が現在取り組んでいる多段階投票のどの段階を表しています。私の計画は、フォームがAjaxを介して送信される最後のページまで、さまざまなdivを非表示/表示することにより、6つの段階に分割することです。

8
Tom

よくわかりませんが、使用できると思います

$.getJSON('url', data, function(jsonData) {                       
  // operate on return data (jsonData)    
});

これで、PHP jsonデータにアクセスして操作できるようになりました。getJson呼び出しの外部で使用する場合は、変数に割り当てることができます。

var neededData; 
$.getJSON('url', data, function(jsonData) {
    neededData = jsonData; 
});       
9
Leon

JQueryのドキュメントを試してください: http://api.jquery.com/jQuery.getJSON/

この例で始めることができます。

$.getJSON('ajax/test.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.Push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});

この例は、JSON構造に基づいています。

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}
5
ajtrichards

PHPではechoを使用しないでください。 JSONではなく文字列を出力します。

json_encode を使用してJSONをjavascriptに渡します。

each を使用して、JavaScriptの最後でJSONの値を取得できます。

http://www.darian-brown.com/pass-a-php-array-to-javascript-as-json-using-ajax-and-json_encode/

3
Rupesh Pawar

JQueryを使用している場合は、次のように、アプローチに対する非常に簡単な解決策があります: http://api.jquery.com/jQuery.getJSON/

それ以外の場合は、上記のコードで試したように、JavaScriptでJSONに直接アクセスする方法はないことを説明してください。重要な点は、JavaScriptはブラウザで実行され、PHPスクリプトはサーバーで実行されます。したがって、それらの間には確実に通信が必要です。したがって、サーバーからデータを要求する必要があります。 http私が提案します。

HTH

2