2016-09-16 191 views
0

我有一個GET函數和JSON響應。 這是功能:從「結果」從json響應中獲取變量

$.ajax({ 
     contentType: 'application/json', 
     dataType: 'json', 
     success: function(msg){ 
     var result = JSON.stringify(msg); 
     console.log(result); 
     }, 
     error: error, 
     type: 'GET', 
     url: myurl 
}); 

成功響應是這樣{"response":{"values":[{"name":"john","sex":"male"}]}}

但是,當我嘗試從響應得到「名」,我得到一個錯誤! 這是錯誤:

for(var k in result){ 
     console.log(result[k]); 
    } 

顯示字母

我嘗試這樣做:

$.each(result,function(index, value){ 
    console.log(index, value); 
}); 

但總是出現錯誤。

+5

嗯,你剛纔**字符串化訪問值**,它現在是一個字符串,而不是一個對象。直接使用'msg'。 – adeneo

+2

而不是講一個關於你的代碼的故事**發佈它**。 – Amit

+1

你的反應本身就是一個JSON對象。意思是如果你想迭代鍵,你只需要'for(var k in msg)' – Bwolfing

回答

0

嘗試刪除JSON.stringify(msg.response)。之後,msg.response.values[0].name 應該給john

+0

我看到無法讀取undefined的屬性'0' –

+0

@KonstantinMokhov更新了答案。現在試試。 –

+0

反對的原因? –

0

您得到的響應本身就是一個json對象。您可以遍歷該對象並從該對象獲取名稱。

+1

[沒有「JSON對象」這樣的東西](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json /) – adeneo

0

您可以從JSON本身

var response = {"response":{"values":[{"name":"john","sex":"male"}]}}; 
 

 
var getName = response.response.values[0].name; 
 

 
alert(getName);