Нужна помощь в обработке нескольких вызовов jquery $ .get одновременно - PullRequest
2 голосов
/ 12 марта 2009

Я новичок здесь, и я очень застрял. Мне нужна помощь. Надеюсь, кто-нибудь скажет мне, что есть очень простое решение моей проблемы Smile

У меня есть сайт, где вы можете нажимать ссылки и открывать соответствующий контент в «окне», так сказать. Это все из одного домена. В любом случае, моя проблема возникает, когда вы нажимаете, скажем ... 5 ссылок очень быстро. То, что происходит, - то, что только 1 или 2 окна получают контент. Происходит следующее: когда завершается один из первых вызовов, он имеет приоритет над более поздними вызовами.

По сути, я хочу знать, как обрабатывать несколько вызовов .get и загружать каждый из них в отдельное окно, не мешая другим. Вот функция, которая обрабатывает это:

popupWindow.prototype.openURL = function(link){
       windowname=this.windowname;
   theWindow="."+windowname+"_window .window .content";
   $(theWindow).hide();
        $(theWindow).html('<p class="page-loading"><img src="graphics/loading.gif" alt=""/></p>').fadeIn("medium");

   $.get(link, function(data) {
      $(theWindow).hide();
      $(theWindow).html(data).fadeIn("medium");
   });
}

Приведенный выше код прекрасно работает, когда вы нажимаете на ссылки ... медленно. Или по одному за раз. Если кто-то может помочь, пожалуйста, дайте мне знать.

Ответы [ 3 ]

4 голосов
/ 12 марта 2009

Попробуйте это:

var theWindow = "." + this.windowname + "_window .window .content";

var изменит область действия вашей переменной на функцию и, надеюсь, решит эту проблему параллелизма.

И ... используйте идентификаторы, когда это возможно ...

3 голосов
/ 12 марта 2009

Ваша theWindow переменная является подразумеваемой глобальной переменной. Каждый раз, когда вызывается openURL, theWindow перезаписывается.

Вы можете решить эту проблему, просто изменив ее на var theWindow = ..

1 голос
/ 12 марта 2009

Вы, ребята, потрясающие. Я относительно новичок в javascript, поэтому я легко перепутал свойства локальной переменной \ глобальной переменной \ объекта. Я решил проблему, локализовав каждую переменную, объявленную в этой функции, и отправив данные (однажды полученные) в отдельную функцию этого объекта (я назвал ее «handleDataRequest (data)»).

Теперь каждое окно загружает контент в себя и не конфликтует с другими!

Спасибо, ребята. Это было самое большое препятствие на моем сайте до сих пор.

прыгает вверх и вниз от волнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...