Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Uncaught TypeError: Object [object global] has no method (https://javascript.ru/forum/events/40370-uncaught-typeerror-object-%5Bobject-global%5D-has-no-method.html)

valyan 02.08.2013 13:39

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.
Как побороть? Заранее спаибо!

valyan 05.08.2013 17:59

Подскажите в чем проблема?

danik.js 05.08.2013 21:39

this внутри обработчика указывает на элемент, на котором возникло событие, а не на объект, свойством которого является функция-обработчик.

valyan 06.08.2013 15:59

А как тогда вызвать функцию? Пробовал через window, call, apply.

danik.js 06.08.2013 16:38

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


Часовой пояс GMT +3, время: 17:47.