Запустить функцию готовности на странице, которая загружается через AJAX - PullRequest
0 голосов
/ 19 декабря 2009

Когда я вызываю страницу через ajax, на которой есть готовая функция, я могу заставить ее работать только с помощью этого метода:

$('div#tab1').empty().html('<img src="Loading.gif">');
$.ajax({
  url: "external.html",
  cache: false,
  success: function(html){
  setTimeout(function(){$('div#tab1').load('external.html')}, 2000);
  }
});

Проблема в том, что это на 2-й вкладке вкладки, поэтому, если кто-то не щелкнет на 2-й вкладке до истечения времени ожидания, функция готовности не сработает. Если я удаляю setTimeout и loading.gif и просто использую простой вызов ajax, он также не запускает готовую функцию. Единственный способ заставить его работать - это использовать setTimeout.

Есть предложения?

1 Ответ

1 голос
/ 19 декабря 2009

Понимаете ли вы, что ваш вызов ajax никогда не использует данные, возвращаемые AJAX? Вы должны быть в состоянии заменить все это на

$('div#tab1').empty().html('<img src="Loading.gif">');
$('div#tab1').load('external.html');

Если вас беспокоит кэширование, добавьте метку времени в конец аргумента загрузки.

Готовый документ должен сработать, когда данные успешно записаны в DOM. Ergo, ваш Ajax должен выглядеть так:

$('div#tab1').empty().html('<img src="Loading.gif">');
$.ajax({
  url: "external.html",
  cache: false,
  success: function(html){
  $('div#tab1').html( html );
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...