我正在編寫API調用網站的代碼作爲練習。我寫了一個函數來獲取數據,另一個函數將文章片段呈現給頁面。我的意圖是能夠清除頁面以顯示完整的文章內容。如何控制回主函數 - jQuery,JS
我正在使用jQuery函數來實現。我的問題是,在調用渲染文章片段的函數之後,我無法調用$(document).ready()
部件中的任何其他函數(因爲控件似乎仍在renderSnippet
函數中)。
我想能夠從$(document).ready()
調用News.clearView
但它不會發生。但是,如果我從renderSnippet
函數內部調用它,它就可以工作。
所以我的問題是:如何在撥打renderSnippet
後返回$(document).ready()
部分?我試着用return
陳述進行試驗,但這沒有幫助。
apiquery.js
var News = {
get: function(query, callback) {
$.ajax({
url: "http://content.guardianapis.com/search",
type: "GET",
data: query,
dataType: "json",
success: function(json) {
callback(json.response.results);
},
error: function(xhr, status, errorThrown) {
alert("Sorry, there was a problem!");
console.log("Error: " + errorThrown);
console.log("Status: " + status);
console.dir(xhr);
},
});
},
renderSnippet: function(quantity, query) {
News.get(query, function(data) {
$.get("views/home.html", function(contents) {
// renders snippets to home page
for(var i = 0; i < quantity; i++) {
var helper = contents;
helper = helper.replace("${Title}", data[i].webTitle);
helper = helper.replace("${Snippet}", data[i].fields.standfirst);
$('div.news').append(helper);
}
//News.clearView(); // This one works
}, 'html');
});
},
clearView: function() {
$('div.news').empty();
}
}
$(document).ready(function() {
News.renderSnippet(10, "q=technology&show-fields=all&api-key=test");
News.clearView(); // This is not working
});
謝謝!
AJAX是異步的。 'clearview()'將在'renderSnippet'之前完成。你爲什麼試圖清空你試圖填充的元素?目標不明確 – charlietfl