2013-08-04 5 views
-1

Я использую jQuery .load(), чтобы заменить div на моей странице таблицей из файла php. Я использую функцию обратного вызова для запуска другой функции, которая изменяет только что загруженные данные, но она запускает функцию до того, как она загрузила таблицу, в результате чего функция ничего не делает.
Есть ли способ заставить callback работать после его загрузки? У меня есть .load() запускается каждые 10 секунд, поэтому я не могу просто сказать, чтобы он подождал.jQuery.load() Функция обратного вызова работает до завершения

Вот что я пытаюсь сделать:

function fixSelected(){ 
    $.each(selected, function(index, value) { 
    document.getElementById(value).innerHTML = '-'; 
    }); 
} 

function refreshTable() { 
    $('#tablefill').load('table.php', function(){ 
     fixSelected(); 
    }); 
} 

Переменная selected представляет собой массив, содержащий идентификаторы нескольких кнопок на столе, который загружается.

+2

Я предпочитаю использовать .ajax (...); где вы можете определить функцию успеха и ошибки. – frenchie

+0

Код, который у вас есть, выглядит правильно. Возможно, вы вызываете 'fixSelected' где-то в другом месте. Просьба представить демонстрацию http://jsfiddle.net/, которая воспроизводит проблему. –

+0

Возможный дубликат функции [JQuery .load() callback] (http://stackoverflow.com/questions/3973933/jquery-load-callback-function) –

ответ

-1

я имел в Table.php $(document).ready(function() {, который вызывает обратный functi чтобы просто не работать. Не знаю, почему это происходит, но удаление этого исправлено.

-1

Вы должны передать функцию обратного вызова в качестве третьего аргумента функции нагрузки(), как это:

function fixSelected(){ 
    $.each(selected, function(index, value) { 
     document.getElementById(value).innerHTML = '-'; 
    }); 
} 

function refreshTable() { 
    $('#tablefill').load('table.php', fixSelected); 
} 

Я нашел решение здесь:
jQuery.load() doesn't work with a defined function as a callback?

Посмотреть этот jsFiddle для примера :
http://jsfiddle.net/bayoffire/kNWpD/1/

+0

Было бы более уместным, так как вы взяли этот ответ из другого вопроса, чтобы пометить его в комментариях и флаге как дубликат, а не продолжать отвечать на новые вопросы с тем же ответом. –

+0

У меня еще недостаточно репутации, чтобы оставить комментарий. И я предоставил MOOcow102 готовый код для копирования и запуска. – lukassteiner

+0

Это не сработало. По какой-то причине, когда у меня есть что-то в пятне функции обратного вызова, она запускается только при загрузке страницы, а не при обновлении table.php. – MOOcow102

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