Ajax Load работает рекурсивно в setTimeout? - PullRequest
0 голосов
/ 03 декабря 2018

Я использовал функцию загрузки ajax внутри setTimeout во время загрузки страницы, функция загрузки ajax будет вызываться через определенное время,

Дело в том, что она работала после завершения setTimeout.Работает как рекурсивный.

Функция SetTimeout будет вызвана один раз, но если бы я использовал функцию ajax внутри нее.Он работает рекурсивно.

 var pathname = window.location.pathname;
 setTimeout(function(){
   $('body').load(pathname + '#examplediv');
 },60000);

Как прекратить рекурсивный вызов для загрузки AJAX?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Проблема в том, что вы пытаетесь загрузить определенный элемент внутри файла через Ajax.Это невозможно.Ajax загружает весь файл, на который вы указываете.В вашем случае этот файл является вашим собственным индексным файлом, который также включает функцию setTimeout.Следовательно, он продолжает перезагружаться каждую минуту.

Чтобы решить эту проблему, создайте новый файл, например popup.html.Скопируйте код внутри #examplediv в направлении этого нового файла.Затем удалите его из файла индекса.Теперь используйте:

var pathname = window.location.pathname;
setTimeout(function(){
    $('body').load(pathname + '/popup.html');
},60000);

Ajax теперь будет загружать popup.html через 1 минуту (который содержит только код из #examplediv) в ваш элемент body вместо всего вашего собственного индексного файла.Это решит проблему.

0 голосов
/ 03 декабря 2018

Из разговора в комментариях угадаю решение.Это может быть точным решением для вас.Но какое-то время будет работать на других.Когда я загрузил страницу с именем «ABC» через Ajax, нажав кнопку / ссылку.И с этой страницы "ABC", вызывающей $ ('body'). Load (url).$ ('Body'). Load (url) было столько раз, сколько я нажимал на кнопку / ссылку.Читая из интернета, я узнал, что мне нужно отменить мероприятие, которое я создал.Так что я использовал это, просто загружая страницу с помощью ajax.Итак, я просто использовал метод.И это решило мою проблему.

$("body").unbind(); 
var pathname = window.location.pathname;
 setTimeout(function(){
   $('body').load(pathname + '#examplediv');
 },60000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...