我定义了一个函数,$(document).ready()
其中使用 DoT.js 将一些 JSON 排列成 HTML:
$(document).ready(function() {
function arrangeResults(jsonObject, templateFunc) {
$(jsonObject).each(function(i, item) {
$.each(item, function(i2, item2) {
$('#ajax-article-list .col-left').append( templateFunc(item2) );
});
});
};
我在页面加载时有一个 AJAX 调用,它执行这个函数来显示数据:
$.post(ajaxRequestURL, function(data) {
arrangeResults(ajaxData.pages, projectTemplate);
}
这很好用。
但是,我有一组链接,它们使用click()
处理程序请求更多/不同的 JSON 数据,它应该arrangeResults
使用返回的数据再次执行,但函数没有执行:
$('nav.filters a').click(function(ev) {
ev.preventDefault();
$.post(ajaxRequestURL, function(data) {
ajaxData = parseJSON(data);
arrangeResults(ajaxData.pages, projectTemplate);
}
}
这行不通。数据都是有效的,如果我将内容arrangeResults
直接放入脚本中,一切正常,但我希望遵循 DRY 并有一个外部函数,我可以在页面加载和其中一个过滤器时调用点击。
我猜这是因为 AJAX 调用是异步的,但由于函数调用在内部,success
我认为这不会导致问题。