作为免责声明,我是 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 + '">‘' + element.title + '’</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/