[英]Why is my method not returning the object
我的ajax响应是正确的,但是我无法将响应对象返回到我的方法调用中。 问题出在if语句的第一部分。 这是我的第一个尝试OOP的项目。 请让我知道如何解决此问题,非常欢迎其他任何OOP代码建议。
$("#search-btn").on('click', function(e) {
e.preventDefault();
searchTerm = $("#search-input").val();
var params = {'q': searchTerm, 'limit': 13};
var url = "https://api.twitch.tv/kraken/search/" + searchType + "?";
/*===*/ if(searchType === "games") {
url = "https://api.twitch.tv/kraken/search/games?type=suggest";
var gamesSearch = new TwitchApiCall(searchType, searchTerm, params, url);
var data = gamesSearch.apiCall();//How do i get response from api call here?=====
console.log(data);//returns undefined================ /*===*/
//will change these when above works=====================
} else if (!searchType || searchType === "channels") {
var defaultSearch = new TwitchApiCall(searchType, searchTerm, params, url);
defaultSearch.apiCall();
displaySearchResults(defaultSearch.response.channels);
} else {
var streamSearch = new TwitchApiCall(searchType, searchTerm, params, url);
streamSearch.apiCall();
displaySearchResults(streamSearch.response.streams);
}
});
}
function TwitchApiCall(searchType, searchTerm, params, url) {
this.params = params;
this.url = url;
this.apiCall = function() {
$.ajax({
url: this.url,
data: this.params,
/*===*/ success: function (response) {
next = response._links.next;
prev = response._links.prev;
console.log(response);//returns the object i want==================
}
}); /*===*/
$("#page-title").html("Twitch.tv/" + searchType + "/" + searchTerm);
$("#sort-pop").addClass('active');
};
}
提前致谢
问题的一部分是,此问题可能不太适合您尝试的OOP类型。 或至少没有什么理由用Twitch制成物体。
这未经测试,但看起来可能会完成,并且代码更简洁:
$("#search-btn").on('click', function(e) {
e.preventDefault();
searchTerm = $("#search-input").val();
var params = {'q': searchTerm, 'limit': 13};
var url = "https://api.twitch.tv/kraken/search/" + searchType + "?";
if (searchType === "games") {
url = "https://api.twitch.tv/kraken/search/games?type=suggest";
callTwitch(searchType, searchTerm, params, url, function(data) {
console.log(data);
})
} else if (!searchType || searchType === "channels") {
callTwitch(searchType, searchTerm, params, url, function(data) {
displaySearchResults(data.channels);
});
} else {
callTwitch(searchType, searchTerm, params, url, function(data) {
displaySearchResults(data.streams);
});
}
});
function callTwitch(searchType, searchTerm, params, url, callback) {
$.ajax({
url: url,
data: params,
success: function (response) {
next = response._links.next;
prev = response._links.prev;
callback(response);
}
});
$("#page-title").html("Twitch.tv/" + searchType + "/" + searchTerm);
$("#sort-pop").addClass('active');
}
它缺少错误处理。 如果AJAX呼叫的数据不正确怎么办? 如果不返回怎么办? 但这应该可以帮助您前进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.