2017-06-15 35 views
-2

問題看起來很簡單,但我無法得到答案。如何在Ajax響應(php)中解析JSON數組?

$.ajax({ 
    type: "POST", 
    url: "../api/simplerequest/", 
    data: {'varr': "data"}, 
    dataType: 'JSON', 
    complete: function (res) { 
     console.log(res); 
     var r = JSON.parse(res.responseText); 
     console.log(r.data[0].rock); 
    } 
}); 

RES已經具有以下類型:

{ 
    { 
    "data" : [{ 
     "rock" : "north", 
     "status" : 1 
    }] 
    } 
} 

JSON.parse(RES);做這項工作,但是當涉及到像數組:

{ 
    { 
    "data" : [{ 
     "rock" : "north", 
     "status" : 1 
    }, 
    { 
     "rock" : "south", 
     "status" : 1 
    }, 
    { 
     "rock" : "east", 
     "status" : 2 
    }] 
    } 
} 

我試圖解析它像

var r = JSON.parse(res.responseText);//as previously, but exactly here comes the error 
console.log(r.data[0].rock); //nothing works 

那麼如何解析的那種「陣」的?

任何幫助,將不勝感激!

+2

如果你有'dataType:'json'並且在響應中得到正確的json-string ...你不需要解析它..它已經是json。 –

+1

你的json無效。如何創建它? –

+1

不應該使用'success:function(res){...}'而不是'complete:function(res){...}'?這樣,'res'將只包含json響應。 –

回答

1

你JSON是無效的,改變{{{

var json = { 
 
    "data" : [{ 
 
     "rock" : "north", 
 
     "status" : 1 
 
    }, 
 
    { 
 
     "rock" : "south", 
 
     "status" : 1 
 
    }, 
 
    { 
 
     "rock" : "east", 
 
     "status" : 2 
 
    }] 
 
    }; 
 

 
console.log(json.data[0].rock); 
 
console.log(json.data[1].rock); 
 
console.log(json.data[2].rock);

,可以有以下有錯誤無效JSON:

//invalid json 
 
var json = { 
 
    { 
 
    "data" : [{ 
 
     "rock" : "north", 
 
     "status" : 1 
 
    }, 
 
    { 
 
     "rock" : "south", 
 
     "status" : 1 
 
    }, 
 
    { 
 
     "rock" : "east", 
 
     "status" : 2 
 
    }] 
 
    } 
 
} 
 

 
console.log(json.data[0].rock);