2016-02-08 42 views
2

我有从php到ajax的json响应。事情取决于在文本框中输入的值json数组的数量有所不同。例如:有时它可能会返回{"count1":10, "ccc1":30},有时也会像这样返回{"count1":10, "ccc1":32, "count2":40, "ccc2":123,"count3":32,"ccc3":21}。我以这种方式提取jquery中的值:json数组处于动态状态的处理json数组处于动态状态

success: function(response){ 
    var count = response.count1; 
    //do something 
} 

但是现在由于计数的数量不同,我使用了一个循环。问题是我可以弄清楚他们中有多少人正在接受,但我该如何处理他们? var count = response.count需要特定的权利?我不能只是像这样串接任何字符串:

var count = 0;  
while(something){ 
    count = count + 1; 
    var str = "count"+count; 
    var whatever = response.str; 
} 

那么,有人可以帮助我一个合适的解决方案在这种情况下?

回答

1

您在那里是正确的轨道。像这样的东西应该适合你。

var i = 1; 
while(response['count' + i]) { 
    var count = response['count' + i++]; 
} 

您可以像访问数组索引一样访问属性。所以response['count'+i]的作品。

+0

对不起,这不起作用。它显示不明。 – Adib

+0

它适合我。将其粘贴到浏览器的控制台中。 http://pastebin.com/tGXs6rbs – Achshar

+0

我认为在我的情况下,响应是一个对象,所以它可能不起作用。你能再看看我的代码吗? – Adib

1

循环遍历所有属性,并将它们添加到像下面这样的变量中。

var response = { "count1": 10, "ccc1": 32, "count2": 40, "ccc2": 123, "count3": 32, "ccc3": 21 }; 
var count = 0; 
for (var prop in response) { 
    if (prop.startsWith('count')) 
     count += response[prop]; 
} 
console.log(count); 
+0

请在问题编辑的JSON数组。 – Adib

+0

查看我更新的答案。 @KimJongUn – Azim

0
success: function(response){ 
var count = response.count1; 
    var object = JSON.parse(response); 
    alert(object.length); 
    for (i = 0; i < object.length; i++) { 
     console.log(object[i]); 
    } 
} 
+0

这是如何解决任何OP的问题。它只是循环通过json对象。 – Achshar

+0

ist在循环前将json数据转换为javascript数组 –

1

检索所有值使用jQuery$.each函数。

var data_tmp = '{"count1":10, "ccc1":32, "count2":40, "ccc2":123,"count3":32,"ccc3":21}'; 
 
var data = $.parseJSON(data_tmp); 
 
    
 

 
    
 

 
$.each(data, function(k,val){ 
 
    if(k.toLowerCase().indexOf("count") >= 0){ 
 
     $('.wr').append('<div>' + val + '</div>') 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="wr"></div>

+0

但我只需要提取计数,您的代码将包含ccc以及计数 – Adib

+0

@KimJongUn,更新了我的示例。现在它将只包含包含'count'的键的值 – ZeJur