jQuery解析多维数组

jQuery解析多维数组,jquery,ajax,json,Jquery,Ajax,Json,我向外部php文件发出ajax请求,然后返回一些json。大多数json都是直截了当的,但我似乎不知道如何解析多维部分 JSON: jQuery: $.ajax({ url: "searchController.php", data: searchData, type: "GET", success:function(q) { if (q) { // Results $('#search .container .body .ajax .returnedHTML .loa

我向外部php文件发出ajax请求,然后返回一些json。大多数json都是直截了当的,但我似乎不知道如何解析多维部分


JSON:

jQuery:

$.ajax({
url: "searchController.php",
data: searchData,
type: "GET",
success:function(q) {
    if (q) { // Results
        $('#search .container .body .ajax .returnedHTML .loadingScreen').hide();                                
        var json = $.parseJSON(q);
        console.log(json);
        if (json.success == "true") {
            var numResults = json.numResults;
            if (numResults == 1) {
            $('#search .container .body .ajax .returnedHTML .content').contents().remove();
            var htmlString = '<div class="searchContent"><ul><li class="returnedResults '+json.type+'"><a href="/#!/'+json.type+'/'+json.id+'/"><div class="title">'+json.name+'</div><div class="body"><div class="quickview"><ul><li><div class="average">'+json.average+'</div><br><span>Average</span></li><li><div class="rates">'+json.numrates+'</div><br><span>Rates</span></li><li><div class="followers">'+json.followers+'</div><br><span>Followers</span></li></ul></div></div></a></li></ul></div>';
            $('#search .container .body .ajax .returnedHTML .content').append(htmlString);
            console.log(htmlString);                                          
        }
    }
});
$.ajax({
url:“searchController.php”,
数据:搜索数据,
键入:“获取”,
成功:功能(q){
if(q){//结果
$('#search.container.body.ajax.returnedHTML.loadingScreen').hide();
var json=$.parseJSON(q);
log(json);
if(json.success==“true”){
var numResults=json.numResults;
如果(numResults==1){
$('#search.container.body.ajax.returnedHTML.content').contents().remove();
var htmlString='
    • ; $('#search.container.body.ajax.returnedHTML.content').append(htmlString); console.log(htmlString); } } });


如何解析JSON,以便访问所有数据,而不仅仅是第一维度中的数据?我在这个网站上四处查看,找不到任何有用和/或有用的东西。非常感谢!

关于您的JSON,您必须再次进行解析

var jsonArr1 = $.parseJSON(json.0);
var jsonArr2 = $.parseJSON(json.1);

您的数组位于
json[0]
json[1]

 ...
for(var i in json) {
  if(!isNaN(i)) {
    ...
    refer to you variables as json[i].name, json[i].average, etc.
    ...
  }
}                                  

你的JSON无效。数组(方括号)没有命名属性。假设你解决了这个问题,你不需要自己解析它,jQuery将在调用回调之前为你做这件事。例如,
q
应该是(已经解析的)对象。你不必单独解析嵌套的对象。这一点很好;错过了-你的[]在数组的周围要{}使其成为一个对象。不需要再次解析,它们将在第一轮解析时被解析;它们将只是原始
json
Object中的数组。而且
type
在您的示例中不存在。
type
在那里,我只是没有复制所有的json。我认为这是一个很好的表示形式。我省略了几行(故意)。变量isNaN是什么?
isNaN()
函数检查变量
i
是否为数字(或不是数字,因此是!)-基本上循环所有键[success,action,date,…,0,1]检查数字(即0,1,…n)并将其视为一个数组。关于:
类型
,我收集到了上述情况,因此“在您的示例中”:
 ...
for(var i in json) {
  if(!isNaN(i)) {
    ...
    refer to you variables as json[i].name, json[i].average, etc.
    ...
  }
}                                  
$.ajax({
url: "searchController.php",
data: searchData,
type: "GET",
success:function(q) {
    if (q) { // Results
        $('#search .container .body .ajax .returnedHTML .loadingScreen').hide();                                
        var json = $.parseJSON(q);
        console.log(json);
        if (json.success.toLowerCase() == "true") {
            ...                                  
        }
    }
});


for(var key in json){
    if(json.hasOwnProperty(key){
       console.log(key);
       console.log(json[key]);
    }    
}