我试图在 jQuery 中访问 $.get() 之外的变量,但它没有发生。
在这里,您会看到,当我定义标题时,$.get() 会忽略它。如果我在 $.get() 中定义标题,标题将变为未定义:
<script type="text/javascript">
var counter = 0;
var icon = '';
var title;
function paginate(limit) {
counter=counter+limit;
$(".flash").show();
$(".flash").fadeIn(400).html("Loading");
$.ajax({
url: "<?php echo config_item('base_url'); ?>notes/jq_get_notes_for_browser/" + '<?php echo $results['select_folder_for_browser'][0]['folder_id']; ?>/' + counter,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (element) {
$(".flash").hide();
$(".load-link").addClass("link-none");
for (var i=0;i<element.length;i++) {
if (element[i].favourite == 'Y') {
icon = 'favourite';
} else {
icon = element[i].status;
}
$.get('<?php echo config_item('base_url'); ?>browser/jq_get_string_truncate_to_length/60/' + encodeURIComponent(element[i].title), function(data) {
title = decodeURIComponent(data);
});
$("#data-notes").append('<div class="browser-item-surround-note note-64" id="note-' + element[i].note_id + '"><div class="container"><a href="<?php echo config_item('base_url'); ?>notes/edit/' + element[i].note_id + '" title="Edit the ‘' + element[i].title + '’ Note"><img src="<?php echo config_item('base_url'); ?>library/images/ui/icons/browser/notes/note-' + icon + '.png" alt="note" width="64" height="64" /></a><p><a href="<?php echo config_item('base_url'); ?>notes/view/' + element[i].note_id + '" title="Created on ' + element[i].creation + '. Modified on ' + element[i].modification + '." class="browser-item-note">' + title + '</a></p></div></div>');
}
}
}
);
}
paginate(0);
</script>
至于 $.get() 本身,它正在返回数据,但我稍后无法访问它(接近代码示例中长 .append() 的末尾)。
编辑
for (var i=0;i<element.length;i++) {
var el = element[i];
$.get('<?php echo config_item('base_url'); ?>browser/jq_get_string_truncate_to_length/60/' + encodeURIComponent(element[i].title), function(data) {
$("#data-notes").append('< code >' + decodeURIComponent(data) + '< / code >');
});
}
需要明确的是,虽然 Brad 的建议在原则上有效,但它不适用于这个问题。除标题外,所有注释都相同。所以将 .append() 放在 $.get() 中显然不是解决方案,除非有办法强制 $.get() 与 for() 一起工作。