2016-04-15 66 views
0

我有以下JavaScript代碼。它只是類,它應該從REST WCF客戶端接收一些數據。代碼引發異常'[specific_method]未定義'

class EmployeesWcfClient { 
      constructor(url) { 
       if (url == null) { 
        url = "http://localhost:35798/MyCompanyService.svc/"; 
       } 
       this.url = url; 
      } 


      doGetRequest(relUrl) { 
       return $.ajax({ 
        type: 'GET', 
        contentType: 'json', 
        dataType: 'json', 
        url: this.url + relUrl, 
        async: false 
       }); 
      } 

      doPostRequest(relUrl, data) { 
       return $.ajax({ 
        type: 'POST', 
        data: JSON.stringify(data), 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        url: this.url + relUrl, 
        async: false 
       }); 
      } 

      getEmployees() { 
       return doGetRequest('Employees'); 
      } 
     } 

我不知道爲什麼會引發異常:'doGetRequest未定義'。有人可以幫忙嗎?

+0

你不能在JS/JQ中創建類。如果您嘗試創建類'類EmployeesWcfClient',那麼編譯器將創建一個具有相同名稱的函數 –

回答

0

答案很簡單: 在'return this.doGetRequest('Employees');'中使用此運算符。在第一個代碼示例中,該操作符缺失。

-1

在doGetRequest裏面的ajax裏this.url不會引用EmployeesWcfClient.url,相反它會指向ajax選項對象本身。所以在調用ajax請求之前請參考這個。

doGetRequest(relUrl) { 
    var _this = this; 
    return $.ajax({ 
     type: 'GET', 
     contentType: 'json', 
     dataType: 'json', 
     url: _this.url + relUrl, 
     async: false 
    }); 
} 

但我不知道這回AJAX功能究竟會返回你請求的響應,雖然你來了async: false。更好地使用回調或承諾。

+0

如果您是向下投票,請評論原因 –