gpt4 book ai didi

javascript - 从 ajax() 成功函数调用外部函数

转载 作者:行者123 更新时间:2023-11-28 02:09:18 25 4
gpt4 key购买 nike

我在 $(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 调用是异步的,但由于函数调用在成功范围内,我认为这不会导致问题。

最佳答案

如果我理解正确的话,你在 $(document).ready() 中有第一个 AJAX 调用 block 。
所以这可能是因为你的 $(document).ready() 中有 arrangeResults 函数堵塞。因此,您无法从 JScript 的其他部分调用该函数。像这样定义它:

    function arrangeResults(jsonObject, templateFunc) {
...
}
$(document).ready(function() {
...
);

等等。如果我错了,请纠正我。

关于javascript - 从 ajax() 成功函数调用外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17342561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com