9

I have really been searching for almost 2 hours and have yet to find a good example on how to pass JSON data from PHP to JS. I have a JSON encoding script in PHP that echoes out a JSON script that looks more or less like this (pseudocode).

{
"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

Problem is, how can I get this data with JavaScript? My goal is to make a .js script that generates a poll based on these JSON datas, but I honest to god can't find any examples on how to do this. Guessing it is some something like:

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

Any links to any good examples or similar would be highly appreciated. And I thought that encoding the data in PHP was the tricky part...

EDIT:

I got this code snippet to work, so I can review my whole JSON data in JS. But now I can't seem to figure out how to get to the inner data. It does print out the stage number (1-6) but I can't figure out how to get the question data, and then again the options data within each question. Do I have to experiment with nested each loops?

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

The idea here is to get into the question information in the middle level and print out the qusetion description, then based on the question type - loop through the options (if any) to create checkbox/radiobutton-groups before going on to the next question. The first number represents which stage of the multi stage poll I am currently working on. My plan is to divide it into 6 stages by hiding/showing various divs until the last page where the form is submitted through Ajax.

4

4 に答える 4

10

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

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

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

var neededData; 
$.getJSON('url', data, function(jsonData) {
    neededData = jsonData; 
});       
于 2012-07-17T06:21:31.407 に答える
5

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"
}
于 2012-07-17T06:21:36.537 に答える
3

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

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

それぞれを使用して、javascript の最後で JSON の値を取得できます。

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

于 2012-07-17T06:23:57.943 に答える
2

JQuery を使用している場合は、http: //api.jquery.com/jQuery.getJSON/で確認できるように、アプローチに対する非常に単純なソリューションがあります。

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

HTH

于 2012-07-17T06:27:09.490 に答える