2016-11-05 49 views
1

在我的attemptSearch函数中,我使用jQuery $ .post来获取一些JSON结果。我发现了错误

未定义是不是在通话的对象

this.getSearchResults.bind(本)

我有同样的设置在另一个网络应用程序,我不会得到这个错误。我究竟做错了什么?

var app = { 
    init: function() { 
     this.cacheDom(); 
     this.bindEvents(); 
    }, 
    cacheDom: function() { 
     this.$search = $('#search'); 
    }, 
    bindEvents: function() { 
     this.$search.keyup(this.attemptSearch) 
    }, 
    searchResults : [], 
    getSearchResults : function(val){  
     var currentSearchResult = val.query.search; 
     for (var i = 0; i < currentSearchResult.length; i++) { 
      var result = { 
       title: currentSearchResult[i].title, 
      } 
      console.log(this.searchResults); 
      this.searchResults.push(result); 
     } 
    }, 
    attemptSearch: function(event) { 
     var wiki = "https://crossorigin.me/https://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch="; 
     if (event.keyCode == 13) { 
      $.post((wiki + $('#search').val()), this.getSearchResults.bind(this)) 
     } 
    }, 
}; 

app.init(); 

回答

2

你确信绑定getSearchResults,但你没有绑定attemptSearch。这几乎肯定是问题:

this.$search.keyup(this.attemptSearch.bind(this)) 
+0

谢谢JLRishe,这的确是问题。 –

相关问题