5

I have my json array with is this :

[{"id":"1","cid":"1","da":"08:00:00","a":"12:00:00","data":"2011-07-03","persone":"3","nome":"Via Bligny"},

{"id":"8","cid":"1","da":"08:30:00","a":"14:45:00","data":"2011-09-26","persone":"2","nome":"Via Bligny"},

{"id":"9","cid":"1","da":"08:30:00","a":"14:15:00","data":"2011-09-26","persone":"2","nome":"Via Bligny"}]

And i want to print it in a table, for example,

<tr><td>{id}</td><td>{da}</td><td>{a}</td><td>{data}</td>(ecc)</tr>

a row for each data set, but, if i try with this code

function ore(cid){
        $.post('index.php?act=ore', {cid : 1}, function(data){
            $.each(data, function(i){
                document.write(data[i].id);
            });
        });
    }

for example, this is the output

undefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefinedundefined

Thank you.

5
  • Your code as shown will work Here's proof. Have you verified that data is giving you what you expect? Commented Jan 15, 2012 at 16:59
  • I'm guessing that you're not parsing the JSON first. See my answer below. Commented Jan 15, 2012 at 17:14
  • 1
    Iesm i didn't parse the JSON :) i was used to use getJSON so i didn't do it ): Commented Jan 15, 2012 at 17:40
  • Just a thought - mixing jQuery with document.write doesn't look like you know what you're doing. If this function gets called after the document is loaded it will destroy the page. You should use jQuery's .append or any other manipulation method Commented Jan 15, 2012 at 17:47
  • I know, to was just for testing ;) don't worry Commented Jan 15, 2012 at 17:49

5 Answers 5

3

Your code as shown works fine.

Because of this, I'm assuming that you haven't parsed the JSON into JavaScript before looping.

var parsed = $.parseJSON( data );

So your code would be...

function ore(cid){
    $.post('index.php?act=ore', {cid : 1}, function(data){

           // parse it first
        var parsed = $.parseJSON( data );

        $.each(parsed, function(i,v){
            document.write(parsed[i].id);
     //     document.write(v); // or like this
        });
    });
}

Without parsing, you're just looping over the characters in the string, and none of them will have an id property.

Sign up to request clarification or add additional context in comments.

Comments

0
function ore(cid){
        $.post('index.php?act=ore', {cid : 1}, function(data){
            $.each(data, function(key, value){
                document.write(value.id);
            });
        });
    }

Comments

0
function ore(cid){
        $.post('index.php?act=ore', {cid : 1}, function(data){

var arr = $.parseJSON( data );

for(x in arr){

    alert(arr[x]['id']);
    alert(arr[x]['da']);
    alert(arr[x]['a']);
    alert(arr[x]['data']);
    alert(arr[x]['ecc']);
}

    });
}

1 Comment

Thank you ;) had to parse the json
0

You could and probably should use a templating system. You could use the one jQuery provides :

$.template("tableRowTemplate",'<tr><td>${id}</td><td>${da}</td><td>${a}</td><td>${data}</td>${ecc}</tr>');
function ore(cid){
    var result;
    $.post('index.php?act=ore', {cid : 1}, function(data){
        $.each(data, function(i,el){
            var row = ($.tmpl( "tableRowTemplate", el);
            if(!result)
                result = row;
            else
                result.add(row);
        });
    });
    // do what you want to do with result
}

Comments

0
function ore(cid){
    $.postJSON('index.php?act=ore', {cid : 1}, function(data){
        for(var i in data) {
            document.write(data[i].id);
        };
    });
}

1 Comment

i think i prefer parse the json;)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.