这是我的JSON数组:
msg={"userid":"82","0":"82","first":"A","1":"A","last":"B","2":"B","email":"w@w.com","3":"w@w.com","username":"n","4":"n","password":"o","5":"o","hash":"3242","6":"3242","active":"0","7":"0","date":"0","8":"0","holding":"","9":"","ip":"0","10":"0","attempts":"0","11":"0"}
现在我正在尝试获取不同的部分,但我尝试的任何工作都没有。我试过了
msg.first //returns undefined
msg['first'] // returns undefined
msg[0] // returns that first bracket {
我相信这很容易解决,我只是不知道问题是什么。这个数组由一些php使用json_encode()
输出。如果该代码是相关的,请告诉我,我会提出来。谢谢。
答案 0 :(得分:3)
如果msg[0]
返回第一个括号,则JSON以某种方式被解释为字符串。这可以通过jQuery的parseJSON()
:
msg = $.parseJSON(msg);
答案 1 :(得分:0)
我试过这样。
<html>
<head>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function display(data) {
$.each(data, function(key,value) {
$('#userDetails').append('<li>' + key + " : " +'<span class="ui-li-aside">'+ value +'</span></li>');
});
}
$(document).ready(function() {
msg= {"userid":"82",
"0":"82",
"first":"A",
"1":"A",
"last":"B",
"2":"B",
"email":"w@w.com",
"3":"w@w.com",
"username":"n",
"4":"n",
"password":"o",
"5":"o",
"hash":"3242",
"6":"3242",
"active":"0",
"7":"0",
"date":"0",
"8":"0",
"holding":"",
"9":"",
"ip":"0",
"10":"0",
"attempts":"0",
"11":"0"}
display(msg);
});
</script>
</head>
<body>
<div id="userDetails"></div>
</body>
</html>
答案 2 :(得分:0)
在使用jQuery ajax
函数时,我遇到了这个问题。您需要指定您期望得到json响应。
如果您进行此调用,则返回的data
变量将为字符串。
$.ajax({
type: "POST",
url: '/controller/function',
data: {
'parameter_name' : value,
},
success: function(data){
console.log(data.blah); // Undefined
},
});
但是如果你将dataType
指定为“json”,那么数据变量将是一个json对象。
$.ajax({
dataType: "json", // Have to include this
type: "POST",
url: '/controller/function',
data: {
'parameter_name' : value,
},
success: function(data){
console.log(data.blah); // Defined!!!
},
});