2014-04-02 5 views
2

Я следил за всеми советами, которые я нашел здесь, в Wait until all jQuery Ajax requests are done?, но мне, должно быть, не хватает чего-то основного.

У меня есть эта функция ...

function ListScores(leaguex, nameid) { 
    return $.ajax({ 
     url: 'sg_ajaxListData.php', 
     data: { 
      nme: nameid, 
      league: leaguex 
     }, 
     dataType: 'json', 
     success: function (rows) { 
      for (var i in rows) { 
       var row = rows[i]; 
       var score1 = row["score1"]; 
       var score2 = row["score2"]; 
       var round = row["round"]; 
       $('#output').append("<br />Round " + round + " - " + score1); 
       if (leaguex == 'r') { 
        $('#output').append(" " + score2); 
       } 
      } 
     } 
    }); 
} 

Она вызывается из document.ready функции моего кода и прекрасно работает, возвращая данные и отображать его, как и ожидалось. Я хочу другую функцию для запуска ПОСЛЕ ListScores() отобразил свои данные так, в другом месте в document.ready функции я ставлю ...

$.when(ListScores()).done(function(a1){ 
console.log("hello",leaguex,nameid, a1); 
}); 

... но ничего не показывает в журнале консоли так оно похоже, эта функция никогда не вызывается. Я пропустил что-то очевидное здесь?

Благодаря Steve

+0

Передача 'ListScores()' вы пытаетесь вызвать функцию – hjpotter92

+1

Вам действительно не нужно '.when' там, вы могли бы просто сделать ListScores(). Done (function() {... }) ', но он должен работать так, как есть .. проверьте свою консоль, и вы можете попробовать добавить обратные вызовы' .fail() 'и' .always() ', чтобы узнать, есть ли какой-либо из этих триггеров. –

+0

@ hjpotter92 Но 'ListScores()' возвращает обещание, поэтому он должен работать. –

ответ

-1

Edit: после @ Джейсон P комментарий, я думаю, что это неправильное решение Но я буду держать его, как он показывает, как autoinvoke функцию --- Конец редактирования

Это не срабатывает, потому что ListScores() никогда не вызывался

Вы должны обернуть ListScores() и сразу же вызвать его.

function ListScores(){ 

} 

Чтобы вызвать его

Вы должны добавить следующее

(function ListScores(){ 

})(); 

Понял?

+2

Выражение 'ListScores()' не вызывает функцию ListScores'? –

+0

Yep - непонимание теперь отсортировано! – sclg

Смежные вопросы