迭代所有其他AJAX对象

时间:2017-02-07 15:02:24

标签: javascript jquery ajax

我有一个JSON编码的AJAX对象数组,我需要迭代每一个。我是jQuery和JS的新手,并且不确定如何做到这一点。我需要将数字作为选项值,将字符串名称作为对象名称。

AJAX对象(请注意,虽然在此示例中数字按顺序排列可能不是因为整数是来自数据库的auto_id,数字可能会被跳过或出现乱序:

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

我尝试了下面的代码,但不起作用。我试图搜索这个答案,但无法找到它。 TIA。目前,newOption正在返回" undefined"。

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

3 个答案:

答案 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/

答案 1 :(得分:1)

您可以使用带模数的if语句吗?然后在循环外初始化count

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

答案 2 :(得分: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>";
}