我我能够使用以下代码获取JSON响应:
var campaign = {id:1};
$.ajax({
type: 'POST',
data: campaign,
url: 'http://getfrontclick.com/web/track.php',
//contentType: 'application/x-www-form-urlencoded',
xhrFields: {
withCredentials: false
},
headers: {
},
success: function(response) {
$('#response pre').html( response );
},
error: function() {
alert("Fail");
}
});
显示:
{"id":"1","username":"admin","email":"alex@xevs.com"}
我正在尝试将这些JSON项中的每一项分配到一个变量中,以便我可以单独将它们回显到页面上。不幸的是我遇到了麻烦。
如果我在"成功"下添加以下代码jQuery ajax响应的一部分,我得到" undefined"
var json_obj = $.parseJSON(response);//parse JSON
var output="<ul>";
for (var i in json_obj)
{
output+="<li>" + json_obj[i].username + ", " + json_obj[i].email + "</li>";
}
output+="</ul>";
$("#sample").html(output);
返回:undefined, undefined
undefined, undefined
undefined, undefined
任何人都可以帮忙吗?这将不胜感激。谢谢!
答案 0 :(得分:2)
您正在调用的API只返回单个对象,而不是数组。因此,只需直接访问对象属性,而无需循环或索引它。由于它不是列表,因此无需使用<ul>
。
var json_obj = $.parseJSON(response);//parse JSON
output = json_obj.username + ", " + json_obj.email;
$("#sample").html(output);
答案 1 :(得分:1)
成功时,很可能已经检测到的jQuery是JSON并且已经解析了response
。
考虑到你发布的JSON,你不需要迭代它,没有循环(参见Barmar的回答)。
但是考虑到你的JSON是一个正确的数组,它看起来像这样(注意users
持有一个对象数组):
{"users":[{"id":"1","username":"admin","email":"alex@xmdevs.com"}, {"id":"2","username":"user","email":"user@xmdevs.com"}]}
然后你可以像这样迭代:
var i = 0,
userList = json_obj.users,
userCount = userList.length,
output = '<ul>';
for(i; i < userCount ;i++){
output+="<li>" + userList[i].username + ", " + userList[i].email + "</li>";
}
output+="</ul>";
不要用于in,否则它也会迭代原型属性。
答案 2 :(得分:1)
这应该有所帮助:http://jsfiddle.net/c3zxLsh6/
var obj = {"id":"1","username":"admin","email":"alex@xmdevs.com"};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var val = obj[key];
$("#myList").append("<li>" + val + "</li>");
}
}