Reputation: 13844
I am getting JSON via ajax like this
{
"questionTypes": [
{
"id": 1,
"name": "text",
"deleted": false,
"version": 0
},
{
"id": 2,
"name": "rating",
"deleted": false,
"version": 0
},
{
"id": 3,
"name": "boolean",
"deleted": false,
"version": 0
},
{
"id": 4,
"name": "option",
"deleted": false,
"version": 0
}
],
"data": [
{
"id": 1,
"category": "default",
"question": "Staff Courtesy",
"deleted": false,
"version": 0
},
{
"id": 2,
"category": "default",
"question": "Staff Response",
"deleted": false,
"version": 0
},
{
"id": 3,
"category": "default",
"question": "Check In",
"deleted": false,
"version": 0
},
{
"id": 4,
"category": "default",
"question": "Check Out",
"deleted": false,
"version": 0
},
{
"id": 5,
"category": "default",
"question": "Travel Desk",
"deleted": false,
"version": 0
},
{
"id": 6,
"category": "default",
"question": "Door Man",
"deleted": false,
"version": 0
},
{
"id": 14,
"category": "client",
"question": "test question",
"deleted": false,
"version": 0
},
{
"id": 15,
"category": "client",
"question": "test1",
"deleted": false,
"version": 0
},
{
"id": 16,
"category": "client",
"question": "test2",
"deleted": false,
"version": 0
},
{
"id": 17,
"category": "client",
"question": "test2",
"deleted": false,
"version": 0
},
{
"id": 21,
"category": "client",
"question": "ggggg",
"deleted": false,
"version": 0
}
]
}
I want to get the name fields from
"questionTypes": [
{
"id": 1,
"name": "text",
"deleted": false,
"version": 0
},
{
"id": 2,
"name": "rating",
"deleted": false,
"version": 0
},
{
"id": 3,
"name": "boolean",
"deleted": false,
"version": 0
},
{
"id": 4,
"name": "option",
"deleted": false,
"version": 0
}
],
$.each(data1.data.questionTypes, function(index, currPat) {
console.log(currPat.name); }
but it did not work ,I get undefined in console.Can any body tell me how to loop exactly
Upvotes: 0
Views: 136
Reputation: 1879
Try this
$.each(json.questionTypes, function (index, currPat) {
div=$('<div/>').text(currPat.name);
$('#jsoncontainter').append(div);
});
http://jsfiddle.net/ardeezstyle/497Tx/1/
For your second part of the problem, here is a solution.
$.each(json.data, function (index, currQuest) {
question=$('<div/>',{'class':'question'}).text(currQuest.question);
answer=$('<div/>',{'class':'answer'});
dropdown=$('<select/>');
$.each(json.questionTypes, function (index, currPat) {
option=$('<option/>').text(currPat.name).appendTo(dropdown);
});
answer.append(dropdown);
$('#jsoncontainter').append(question).append(answer);
});
Upvotes: 0
Reputation: 4904
jQuery
$.each(json.data, function (index, currPat) {
$(tbody).append('<tr><td><b>Question from data: ' + currPat.question + '</b></td><td><b>Names from questionTypes</b><select class="qType"></select></td></tr>');
});
var select = $('.qType');
$(json.questionTypes).each(function (index, currPat) {
$(select).append('<option>' + currPat.name + '</option>');
});
You must loop twice: Once for getting the question
and then for getting name
.
Upvotes: 2
Reputation: 5224
OK, you can do this ,
$(jsonObject.questionTypes).each(function(i,value){
//get value here using value.name
alert(value.name);
});
And the problem was you were actually extracting questionTypes
from data
which is non existent there.
Upvotes: 2
Reputation: 1857
in your code I don't see any username properties, try to use this code.
$.each(data1.data.questionTypes, function(index, currPat) {
console.log(currPat.name); }
Upvotes: 0
Reputation: 9637
data has no questionTypes
$.each(data1.questionTypes, function(index, currPat) {
alert(currPat.name);
});
Upvotes: 0