当这个函数得到这个参数?

时间:2014-09-22 12:45:36

标签: javascript jquery html ajax

我正在检查一段用于打印电影列表的代码:

HTML CODE

<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>

EVENT HANDLER

$('#movieSearchForm').on('submit', function (event) {
    event.preventDefault();
    var movieTitle = $('#movieSearchForm input').val();

    requestApi(movieTitle, myApp);
});           

API VAR

var apiUrl = 'http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=j23zuzdpapq9ny3watvc9kja';¬

REQUEST API

var requestApi = function (query, callback) {
    $.ajax({
      url: apiUrl,
      data: {
        q: query
      },
      dataType: 'jsonp'
   }).success(callback);
}

我的APP功能

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获得两个参数,我应该改变什么?:

2 个答案:

答案 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"});

callbackFunctionmyApp函数,response参数将获得从callbackFunction传递的所有优秀JSON。

欢迎使用Async Javascript!