我有一个按钮,可以对此页面执行ajax调用:http://jsonplaceholder.typicode.com/。当我不使用$.each()
时,它会显示一个帖子。但是如果我使用$.each()
,它将返回4个对象。见屏幕截图:
这是jQuery:
button.on('click', function(){
$.ajax({
url : 'http://jsonplaceholder.typicode.com/posts/1',
method : 'GET',
dataType: 'json',
contentType: 'application/json',
success : function(result) {
console.log(result);
/* Build HTML result */
$.each(result, function(index, post){
var msg = $('<p></p>');
msg.append('Title: '+result.title+'<br>');
msg.append('User ID: '+result.id+'<br>');
msg.append(result.body);
msg.insertAfter(button);
});
},
error : function(request, errorType, errorMessage) {
alert('Error ' + errorType + ' with message:' + errorMessage);
},
timeout : 3000,
beforeSend : function() {
//runs before request is send
smiley.remove();
confirmation.insertBefore(button);
},
complete: function() {
//runs once the request is finished
confirmation.remove();
smiley.insertBefore(button);
}
});
});
但根据jsonplaceholder,应该只有一个对象。另外,我的控制台说应该只有一个对象。
这是我回来的JSON:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit suscipit recusandae consequuntur expedita et cum reprehenderit molestiae ut ut quas totam nostrum rerum est autem sunt rem eveniet architecto"
}
为什么$.each()
输出相同的结果4次?我该如何解决它,所以它只输出一次?
编辑:我从以下答案中学到了什么
感谢所有帮助&amp;坚韧但善良的爱。我现在明白,根据返回的内容(对象,数组,html,json),我需要不同的方法来处理结果。
在上面的例子中,以下代码就足够了(感谢@ user1278584):
var msg = 'Title: '+result.title+'<br>';
msg += 'User ID: '+result.id+'<br>';
msg += result.body;
$("<p>" + msg + "</p>").insertAfter(button);
我希望这有助于其他初级程序员。为大家喝彩。
答案 0 :(得分:2)
它没有返回“4个对象”。
在浏览器中访问http://jsonplaceholder.typicode.com/posts/1。
这是一个有4个属性的对象。你正在迭代属性。请参阅jQuery文档以了解正确的$.each
用法。
答案 1 :(得分:1)
src/main/scala/worksInAllVersions.scala
src/main/scala_211???/myTraitForScala211.scala
src/main/scala_210???/myTraitForScala210.scala
方法迭代所有对象属性,您不应该使用$.each
或将返回的对象包装到数组中。
答案 2 :(得分:1)
查看这个jsfiddle:http://jsfiddle.net/ayns4Lxr/
正如其他人所提到的,你的JSON响应有四个对象,这就是你获得4个结果的原因。
如果要更改JSON结果以使用$.each
属性,请将响应更改为以下内容:
{
"results": {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
}