簡體   English   中英

從ajax()成功函數調用外部函數

[英]Call external function from ajax() success function

我在$(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我認為這不會造成問題。

如果我理解正確,那么您首先在$(document).ready()塊內進行$(document).ready() AJAX調用。
可能是因為您在$(document).ready()塊中有rangingResults函數。 因此,您將無法從JScript的其他部分調用該函數。 像這樣定義它:

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

等等。 如果我錯了,請糾正我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM