jQuery удаляет все запросы $ .ajax из загруженного контента $ .ajax - PullRequest
2 голосов
/ 06 июля 2011

Я создаю страницу, на которой пользователь может щелкнуть ссылку, и она $ .ajax загрузит содержимое в контейнерный блок.Проблема заключается в том, что все исходные файлы имеют собственные запросы $ .ajax, поэтому, когда пользователь щелкает 2 или более ссылок, он начинает увеличивать количество запросов $ .ajax, и контейнерный div заполняется данными.По сути, моя цель - чтобы пользователь щелкнул ссылку, и он загрузил запрошенную страницу (и начал обновление $ .ajax из загруженного источника ajax).И когда они щелкают по другой ссылке, она очищает старые запросы $ .ajax от предыдущего загруженного содержимого ajax.

$(function(){
                $("a.text").click(function(){
                    $("#botscontainer").remove();
                    $("#botsparent").append("<div id=\"botscontainer\"></div>");
                    $.ajax({
                      url: $(this).attr("id") + ".html",
                      cache: false,
                      success: function(data){
                        $("#botscontainer").hide().append(data).fadeIn("slow");
                      }
                    });

                    return false;
                });
            });

Вы можете видеть, когда пользователь нажимает ссылку с текстом класса, он отправляет запрос ajax на страницу.с большим содержанием AJAX (то есть на интервале).Поэтому мне нужно очистить старые «данные», когда пользователь нажимает другую ссылку.Я даже дошел до полного удаления родительского элемента и его воссоздания, но он не удалит запросы $ .ajax из данных.Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Прервать предыдущие запросы ... Попробуйте это ...

       $(function()
       {
            $("a.text").bind('click', Request);
       });

       function Request()
            {
                /* I put try catch so that if the xhr object doesn't exist it won't throw error */
                try{
                xhr.abort();
                }
                catch(e){}
                xhr = null;
                xhr = $.ajax({
                  url: $(this).attr("id") + ".html",
                  cache: false,
                  success: function(data){
                    $("#botscontainer").hide().html(data).fadeIn("slow");
                  }
                }
                return false;
            }

Связать ссылки только с одной функцией ... Вы в основном назначаете их для своего собственного AJAX.

0 голосов
/ 07 июля 2011

Для этого вам нужно использовать setInterval ().Просто сделайте переменную, содержащую setInterval, глобальной, и на первой странице, в которую вы хотите загрузить содержимое ajax, используйте clearInterval (var), чтобы остановить предыдущие запросы ajax.

$(function(){
                $("a.text").click(function()
                {
                    clearInterval(refreshId2);
                    $.ajax({
                      url: $(this).attr("id") + ".html",
                      cache: false,
                      success: function(data){
                        $("#botscontainer").hide().html(data).fadeIn("slow");
                      }
                    });

                    return false;
                });
            });
0 голосов
/ 06 июля 2011

Вы можете отменить запрос

var x;//in the outer scope of ajax call

x.abort();
x = $.ajax(params);
...