Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理json,其中json数组的数量是动态的_Php_Jquery_Json_Ajax - Fatal编程技术网

Php 处理json,其中json数组的数量是动态的

Php 处理json,其中json数组的数量是动态的,php,jquery,json,ajax,Php,Jquery,Json,Ajax,我有一个从php到ajax的json响应。这取决于在文本框中输入的值,json数组的数量会有所不同。示例:有时它可能返回{“count1”:10,“ccc1”:30},有时类似于{“count1”:10,“ccc1”:32,“count2”:40,“ccc2”:123,“count3”:32,“ccc3”:21}。我通过以下方式提取jquery中的值: success: function(response){ var count = response.count1; //do s

我有一个从php到ajax的json响应。这取决于在文本框中输入的值,json数组的数量会有所不同。示例:有时它可能返回
{“count1”:10,“ccc1”:30}
,有时类似于
{“count1”:10,“ccc1”:32,“count2”:40,“ccc2”:123,“count3”:32,“ccc3”:21}
。我通过以下方式提取jquery中的值:

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;
}

那么,在这种情况下,有人能帮我找到一个合适的解决方案吗?

循环所有属性,并将它们添加到如下变量中

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);

你在那里走对了。像这样的东西应该适合你

var i = 1;
while(response['count' + i]) {
    var count = response['count' + i++];
}
可以像访问数组索引一样访问属性。所以
响应['count'+i]
有效。

成功:函数(响应){
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]);
    }
}
var count=response.count1; var object=JSON.parse(响应); 警报(对象长度); 对于(i=0;i
要检索所有值,请使用
jQuery
$。每个
函数

var数据_tmp='{“count1”:10,“ccc1”:32,“count2”:40,“ccc2”:123,“count3”:32,“ccc3”:21}';
var data=$.parseJSON(data_tmp);
$.each(数据、函数(k、val){
if(k.toLowerCase().indexOf(“count”)>=0){
$('.wr')。追加(''+val+'')
}
});


这如何解决OP的任何问题。它只是在循环之前通过json object.ist将json数据转换为javascript数组进行循环,但我只需要提取计数,您的代码将包括ccc以及counts@KimJongUn,更新了我的示例。现在,它将只包括包含
count
的键的值,它对我有效。将其粘贴到浏览器的控制台中。我认为在我的例子中,响应是一个对象,所以它可能不起作用。你能再看一下我的代码吗?即使它是一个对象,它也能工作。我链接的粘贴库也具有作为对象的响应。如果你能分享整个代码,我可以看看你可能会失败的地方。还要确保加载了更新的js文件,清除缓存,等等。