2017-02-07 4 views
1

У меня есть JSON-кодированный массив объектов AJAX, и мне нужно итератировать все остальные. Я новичок в jQuery и JS и не знаю, как это сделать. Мне нужно, чтобы числа были значением параметра и именем строки в качестве имени объекта.Итерация каждого объекта AJAX

Объект AJAX (обратите внимание, хотя в данном примере цифры в порядке они могли бы не быть, потому что целые числа являются auto_id из базы данных и номера могут быть пропущены или из заказа:

{"data":["1","chicken","2","beef","3","fish","4","pork","5","turkey","6","lamb","7","vennison","8","duck"],"error":false} 

Я попытался следующий ниже код, который не работает. Я попытался сделать поиск этого ответа, но не смог найти его. ТИА. в настоящее время, newOption возвращается «неопределенными».

$.each(data.data, function(i,s){ 
    var count=s[i]; 
    var newOption = s[i+1];   
    output += '<option value="' + count + '">' + newOption + '</option>'; 
    i++; 
    });    

ответ

1

вы можете использовать if заявление с модулем? И затем initia lize ваш count вне цикла.

var count = 0; 
$.each(data.data, function(i,element){ 
    if (i % 2 == 0) { 
    count++; 
    output += '<option value="' + count + '">' + element + '</option>'; 
    } 
    i++; 
}); 
+0

Привет Мт. Номера могут быть не в порядке, потому что они являются auto_id из базы данных, поэтому мне нужно получить их из объекта массива. Я получаю newOption = "undefined" на веб-странице. Я считаю, что я неправильно ссылаюсь на объект с индексом. – kc3ase

+0

Вы правы в 'newOption =" undefined "'. Ваша '' 'переменная является самим фактическим элементом. Проверьте мой обновленный код. –

+0

Не думаю, что я видел что-то о том, что в первый раз они были не в порядке. –

2

Используйте for петли, но приращение счетчика на каждый цикл 2:

var data = {"data":["1","chicken","2","beef","3","fish","4","pork","5","turkey","6","lamb","7","vennison","8","duck"],"error":false} 

var output = ''; 

for(i = 0; i < data.data.length; i+=2) { 
    output += '<option value="' + data.data[i] + '">' + data.data[i+1] + '</option>'; 
} 

https://jsfiddle.net/go98npym/

+0

Это работает спасибо! – kc3ase

1

Когда Итерацию над массивом, используя jQuery.each первых паров являются индексом, а второй один - значение в самом индексе.

Вместо использования jQuery используйте простой javascript.

попробуйте следующее:

var d = data.data; 
var output = ""; 

for (var i = 0 ; i< d.length; i=i+2) { 
    var count = d[i]; 
    var newOption = d[i+1]; 
    output += "<option value='"+count+"'>"+newOption+"</option>"; 
} 
+0

Это работает спасибо! – kc3ase

Смежные вопросы