0

嗨,我似乎已经被 JSON 传递的数据困住了。当我控制台日志查看传递的数据时,对象被重复传递,这影响了我的附加输出。

$.ajax({
            url: "http://howtodeployit.com/api/get_recent_posts",
            dataType: "json",
            jsonpCallback: 'successCallback',
            async: true,
            beforeSend: function() { $.mobile.showPageLoadingMsg(true); },
            complete: function() { $.mobile.hidePageLoadingMsg(); },
            success:function (data){
                $.each(data.posts, function(key, val) {
                console.log(data.posts);

                var result = $('<li/>').append([$("<h3>", {html: val.title}),$("<p>", {html: val.excerpt})]).wrapInner('<a href="#devotionpost" onclick="showPost(' + val.id + ')"></a>');

                $('#postlist').empty().append(result);
            });

如下所示,这出现了多次,但预期的输出应该只是一行对象。 在此处输入图像描述

4

2 回答 2

1
$.each(data.posts, function(key, val) {

那是一个循环。因此,假设 data.posts 是一个包含多个对象的数组,您将看到它被触发的次数与帖子的数量一样多。

你希望看到什么?

此外,loxxy 是对的,您缺少右括号,因此很难知道您打算在哪里实际结束循环函数。

于 2013-10-24T05:12:31.110 回答
0

如果您尝试加载 jsonp,则 dataType 应为jsonp

另外,我确实认为您正在尝试遍历每个帖子。但是由于每次都清空容器,因此只会有一个结果。

所以而不是:

$('#postlist').empty().append(result);

采用

$('#postlist').append(result);

你错过了一个右括号吗?

$.ajax({
    url: "http://howtodeployit.com/api/get_recent_posts",
    dataType: "jsonp",
    jsonpCallback: 'successCallback',
    async: true,
    beforeSend: function () {
        // $.mobile.showPageLoadingMsg(true);
    },
    complete: function () {
        //  $.mobile.hidePageLoadingMsg();
    },
    success: function (data) {
        $.each(data.posts, function (key, val) {
            console.log(data.posts);

            var result = $('<li/>').append([$("<h3>", {
                html: val.title
            }), $("<p>", {
                html: val.excerpt
            })]).wrapInner('<a href="#devotionpost" onclick="showPost(' + val.id + ')"></a>');

            $('#postlist').append(result);

        });
    }
});

这是一个演示

于 2013-10-24T05:14:20.547 回答