我正在检查一段用于打印电影列表的代码:
<h1>My new Website</h1>
<form action="formHandler.php" method="GET" id="movieSearchForm">
<input name="query" type="search" id="search" placeholder="Find a Movie">
<button>
Search
</button>
</form>
<div id="resultList"></div>
<div id="movieList"></div>
$('#movieSearchForm').on('submit', function (event) {
event.preventDefault();
var movieTitle = $('#movieSearchForm input').val();
requestApi(movieTitle, myApp);
});
var apiUrl = 'http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=j23zuzdpapq9ny3watvc9kja';¬
var requestApi = function (query, callback) {
$.ajax({
url: apiUrl,
data: {
q: query
},
dataType: 'jsonp'
}).success(callback);
}
var myApp = function (response) {
var movieListData = response.movies;
var movieList = movieListData.map(function (movieItem) {
return itemHtml(movieItem.posters.thumbnail, movieItem.title);
});
$('#movieList').get(0).innerHTML = [
'<ul>',
movieList.join(''),
'</ul>'
].join('');
};
因此,requestApi
获取所需的电影列表,并myApp
对其进行格式化并将其插入到网络中。我不明白的是myApp
获取response
参数的方式。任何的想法?还有一个问题,如果我想让myApp获得两个参数,我应该改变什么?:
答案 0 :(得分:2)
response
由jQuery提供:api.jquery.com/jQuery.ajax - 向下滚动到“success”,它表示你得到Function( PlainObject data, String textStatus, jqXHR jqXHR )
- 这是一个获取对象的函数它的第一个参数,第二个字符串和第三个xhr
对象。
要使你的回调取2个参数,你可以这样做:
$('#movieSearchForm').on('submit', function (event) {
event.preventDefault();
var movieTitle = $('#movieSearchForm input').val();
requestApi(movieTitle, function(response) { myApp(response, anotherParam, yetAnotherParam); });
});
然后只需更新myApp
即可:
function myApp(response, aParam, bParam) {
答案 1 :(得分:1)
所以,我假设requestApi
接受两个参数:电影标题(字符串)和回调(回调函数)。一旦requestApi
返回一些数据,它将调用回调函数,类似于:
callbackFunction({title:"stuff", length:"1:09:30"});
callbackFunction
是myApp
函数,response
参数将获得从callbackFunction传递的所有优秀JSON。
欢迎使用Async Javascript!