Итак, у меня есть три поля <select>
выстроенные по горизонтали следующим образом:
———- | teacher1 | —- | student1 | —- | student6 |
———- | teacher2 |
———- | teacher3 |
Okey, поэтому для этого примера мы используем учителей и студентов, учитель может содержать несколько учеников. И когда вы выбираете учителя из левого списка, все ученики, подключенные к этому учителю, появляются в среднем списке. И справа у нас есть ученики, у которых нет учителя. Если вы нажмете на ученика в среднем поле, он будет удален из этого учителя и появится в правом поле. (СОЕДИНЕНИЯ СДЕЛАНЫ В СУБД MYSQL).
Все поля выбора находятся внутри <div>
, которые с jquery используют функцию .load () для изменения содержимого, например, для функции удаления:
$('#hold2').load("page.php?q=" + data);
Все работает нормально, и база данных изменяется правильно, проблема в том, что я хочу обновить поле mid и right после функции .load (), поэтому вам не нужно обновлять страницу, чтобы увидеть результат. Поэтому я поставил следующие функции:
$('#hold2').load("page.php?q=" + data); refreshTable1(teacher); refreshStudent();
Здесь refreshTable1:
function refreshTable1(value) { teacher = value; $('#holder').load("example.php?q=" + value); }
Здесь refreshStudent:
function refreshStudent() { $('#table').load("examplepalge.php?p=blabla", function(){ setTimeout(refreshTable1(etc), 2000); }); }
Иногда он освежает как среднее, так и право поле прямо, иногда нет, а иногда и только один из них. Как я могу сделать этот запуск гладким, чтобы поля, безусловно, правильно $('#hold2').load("page.php?q=" + data);
ПОСЛЕ: $('#hold2').load("page.php?q=" + data);
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: не все соединения и функциональные ссылки верны, я просто изменил некоторые вещи для этого примера. Но мы уже знаем, что функции работают, а именно, что иногда они загружаются правильно, а иногда и нет.
Вам нужно настроить его с помощью обратных вызовов, чтобы выполнить только вторую функцию после завершения первой.