Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.12.2013, 03:02
Новичок на форуме
Отправить личное сообщение для ArtJS Посмотреть профиль Найти все сообщения от ArtJS
 
Регистрация: 29.12.2013
Сообщений: 7

Jquery post. объекты и методы-обработчики
Доброго времени суток!
Я новичек в JS и слегка заплутал.
Допустим я делаю такой конструктор:
function widget(name, x, y) {
    this.name = name;
    this.x = x;
    this.y = y;

   //функция draw вызовет post запрос
    this.draw = function() {
         //добавим при помощи jQuery код виджета
         // ............
         //запросим, что надо у сервлета
         $.post("http://localhost:8080/Testing", {command: "value"}, this.onPostResponse);
}

 //А это асинхронный обработчик ответа на post запрос
 this.onPostResponse = function(data){
        var obj = JSON.parse(data); //кое-что получим и распарсим
        // и т.д., некий код который что-то выведет на наш виджет
   }
}


После описания всего этого я решил создать парочку таких "виджетов" на страничке:

$(document).ready(function(){

           var myWidget1 = new widget("FIRST",100,200);
           var myWidget2 = new widget("SECOND",150,300);
           myWidget1.draw();
           myWidget2.draw();
}


Но к сожалению, обработчик this.onPostResponse отрабатывает только один из ответов (и то не всегда, в случайной последовательности).
Понимаю, что я накодил лажу. Подскажите пожалуйста, как все же прописать общий обработчик как метод объекта, и вызывать их с нескольких объектов в скрипте. Неужели надо писать десятки однотипных функций?
Я хотел сделать одну функцию и думал что она будет вызываться всегда для каждого из постов, а дальше в ней определять на основе пришедшей информации, какой из виджетов обновлять, используя this...
Ответить с цитированием
  #2 (permalink)  
Старый 29.12.2013, 19:20
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от ArtJS
//запросим, что надо у сервлета
         $.post("http://localhost:8080/Testing", {command: "value"}, this.onPostResponse);
попробуй так:
$.ajax({
    url: "http://localhost:8080/Testing",
    type: "POST",
    data: {command: "value"},
    context: this,
    success: this.onPostResponse
});
Ответить с цитированием
  #3 (permalink)  
Старый 29.12.2013, 22:06
Новичок на форуме
Отправить личное сообщение для ArtJS Посмотреть профиль Найти все сообщения от ArtJS
 
Регистрация: 29.12.2013
Сообщений: 7

Спасибо! Я как раз собирался спросить про доступ к атрибутам объекта. context: this, это то что нужно! теперь можно не отправлять в ответе идентификатор, а пользоваться контекстом.
Функция действительно добросовестно выполнялась два раза. Оказалось, просто сервер отвечал бяку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая разница между post запросами jquery и ajax? Rooner jQuery 2 18.06.2012 14:29
Jquery ajax в Operа к ASP.NET скрипту по таймеру, IIS выдает 403.9 Zhirinovsky AJAX и COMET 0 23.02.2012 12:56
Как к объектам полученными jquery применить стандартные методы javascript? klauddl jQuery 4 14.09.2011 09:26
jquery и POST korner jQuery 6 27.06.2010 03:52
jQuery Ajax Rater Plugin и массив POST - Нужна помощь TROODON jQuery 12 30.12.2009 22:44