Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2013, 13:39
Аспирант
Отправить личное сообщение для valyan Посмотреть профиль Найти все сообщения от valyan
 
Регистрация: 05.11.2012
Сообщений: 55

Uncaught TypeError: Object [object global] has no method
Здравствуйте. Есть такой код
this.clickOnDriver = function(e)
{
 for (i = 0; i < driverobj.services.length; i++)
 {
   var order =$.ajax(
   {
    url: '/test.php?action=getOrderJSON&mainName=main&user=aash&pass=123456&idOrder='+ driverobj.services[i].id + '&cid=1',
    dataType: "json",
    async: false,
    success: function(data) 
   {
    //alert(data);
   },
   error: function(data)
   {
     alert("fail");
   } 
  }).responseText;
  $("#dialog").append(
  "<tr>" +
    "<td> - " + order + "</td>" +
  "</tr>");
 }
}

Он работает, все хорошо. Переношу ajax запрос в отдельную функцию т.е.
this.clickOnDriver = function(e)
{
 for (i = 0; i < driverobj.services.length; i++)
 {
  var order = this.getById(driverobj.services[i].id); //ВОТ ЗДЕСЬ ОШИБКА
  $("#dialog").append(
  "<tr>" +
    "<td> - " + order + "</td>" +
  "</tr>");
 }
}

this.getById = function(idd)
{
var order =$.ajax(
   {
    url: '/test.php?action=getOrderJSON&mainName=main&user=aash&pass=123456&idOrder='+ driverobj.services[i].id + '&cid=1',
    dataType: "json",
    async: false,
    success: function(data) 
   {
    //alert(data);
   },
   error: function(data)
   {
     alert("fail");
   } 
  }).responseText;
 return order;
}

То возникает ошибка Uncaught TypeError: Object [object global] has no method.
Как побороть? Заранее спаибо!
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2013, 17:59
Аспирант
Отправить личное сообщение для valyan Посмотреть профиль Найти все сообщения от valyan
 
Регистрация: 05.11.2012
Сообщений: 55

Подскажите в чем проблема?
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2013, 21:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

this внутри обработчика указывает на элемент, на котором возникло событие, а не на объект, свойством которого является функция-обработчик.
Ответить с цитированием
  #4 (permalink)  
Старый 06.08.2013, 15:59
Аспирант
Отправить личное сообщение для valyan Посмотреть профиль Найти все сообщения от valyan
 
Регистрация: 05.11.2012
Сообщений: 55

А как тогда вызвать функцию? Пробовал через window, call, apply.
Ответить с цитированием
  #5 (permalink)  
Старый 06.08.2013, 16:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Навешивай в качестве обработчика события анонимную функцию, внутри нее уже вызывай нужный обработчик с нужным контекстом
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Object [object Object] has no method 'animate' DonLino jQuery 4 19.09.2011 19:08
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34