jquery - 在Ajax中访问JSON数据成功: function() in jQuery

标签 jquery

作为免责声明,我是 jQuery 的拾荒者/黑客,而不是熟练的开发人员。

我正在尝试构建 Twitter 式的分页,这几乎可以工作了。

我正在使用 PHP 和 MySQL 检索 JSON 格式的数据,我收到的数据为:

[
    {
        "bookmark_id":"5507",
        "creation":"Mon 16th Jul 2012",
        "url":"http:\/\/www.bbc.co.uk\/news\/science-environment-18833386",
        "title":"Light trick to see around corners ..."
    }

...

]

代码本身是:

<script type="text/javascript">
    function paginate(limit) {
        if (limit == 0) { count = 0; } else if (limit > 0) { count += 10; }
        $(".flash").show();
        $(".flash").fadeIn(400).html("Loading...");
            var data = "limit=" + count;
            $.ajax({
                type: "POST",
                url: "<?php echo config_item('base_url'); ?>topics/jq_get_bookmarks_for_topic_by_tag_as_object/" + <?php echo $results['select_topic'][0]['topic_id']; ?>,
                data: data,
                cache: false,
                success: function **(index, element)** {
                    alert(index);
                    $(".flash").hide();
                    $(".load-link").addClass("link-none");
                    for (var i=0;i<element.length;i++) {
                        $("#data-topics-bookmarks-tags").append('<tr><td>[<a href="<?php echo config_item('base_url'); ?>bookmarks/view/' + **element.bookmark_id** + '">View</a>] [<a href="<?php echo config_item('base_url'); ?>bookmarks/visit/' + element.bookmark_id + '" target="_blank">Link</a>] <a href="<?php echo config_item('base_url'); ?>bookmarks/edit/' + element.bookmark_id + '" title="Edit ' + element.title + '">&lsquo;' + element.title + '&rsquo;</a></td><td>' + element.creation + '</td></tr>');
                    }
                }
            }
        );
    }
    paginate("0");
</script> 

触发加载更多数据的链接是:

<p><a href="#load" onclick="paginate('10')">Load Bookmarks</a></p>

一切正常..明显的异常(exception)是我实际上能够访问数据并将其显示为“未定义”以外的任何内容。

在我标记为粗体的两个区域中,我尝试了所有我能想到的组合。

当我单击加载链接时,它会按预期附加表格,但每个项目都是“未定义”。

是的,数据如上所述;我从警报(索引)中获取了数据。

我确信这对于我们中的专家来说是一个简单的修复,但我不是其中之一。

最佳答案

默认情况下,.ajax 函数不会将返回的 JSON 数据解析为对象。您必须自己调用 $.parseJSON(index) ,或者在 .ajax() 设置中将 dataType 设置为“json”,如下所示:

$.ajax({
    type: "POST",
    dataType: "json",
    ...

此外,成功函数的返回参数是原始数据、textStatus 和 jqXHR 对象。因此,出于您的目的,您真正需要的只是如果您包含 dataType,该数据将自动解析为 JSON。因此,您可以将“成功”参数更改为:

success: function (element) {

除非需要,否则您不需要处理 textStatus 和 jqXHR 参数。

关于jquery - 在Ajax中访问JSON数据成功: function() in jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457452/

相关文章:

jquery - 如何在 jquery 的 .html() 中执行 jquery/javascript 代码

javascript - 如何使用css动画让元素一个一个出现

javascript - 使用 RegEx 格式化 InnerHtml 文本无法正常工作

javascript - 如何使用 AJAX 重新加载 Laravel @includes?

javascript - 将元素放在用户点击的位置

javascript - 最初隐藏 div 和动态隐藏它的区别

javascript - jQuery:创建新对象... $(object)

jquery - 选择左边的内容

javascript - jquery .animate() 滑动问题

javascript - jqGrid - 使用向上/向下箭头键导航行?