FlickrAPI的jsonp问题:未捕获的ReferenceError:未定义jsonFlickrApi

时间:2014-04-08 18:37:02

标签: javascript jquery ajax backbone.js

我不确定为什么我一直收到以下错误。

Uncaught ReferenceError: jsonFlickrApi is not defined

我正在尝试将包含URL参数的对象传递给ajax调用。

这是一个小提琴:http://jsfiddle.net/3vRM3/

这是我的JavaScript:

var TheModel = Backbone.Model.extend({
  default: {
    photos: '',
    stat: ''   
  }
});

var TheCollection = Backbone.Collection.extend({
  model: TheModel,

  url: 'http://api.flickr.com/services/rest/'

});

// The main view
var List = Backbone.View.extend({
  el: '.js-container',

  initialize: function () {
    this.collection = new TheCollection();

    return this;
  },

  render: function () {
    var self = this;

    var urlParameters = {
        page : '1',
        api_key: 'xxxxxxxxxxxxxxxxxxxxx',
        tags: "candy",
        method: 'flickr.photos.search',
        per_page: '3',
        format: 'json',
        jsoncallback: '?'
    };

    this.collection.fetch({
        dataType: 'jsonp',
        data: urlParameters,
        success: function (data) {
            console.log('success');
            console.log(self.collection);

        }
    });

    return this;
  }

});


var myList= new List();
myList.render();

这是我的HTML:

<script type="text/template" id="DropdownList">
  <% console.log('this is the template') %>
  <h3>Stat = <%- collection[0].stat %></h3>
</script>

<div class="js-container">
</div>

2 个答案:

答案 0 :(得分:2)

看看回复:

jsonFlickrApi({"photos":{"page":1,"pages":144580,"perpage":3,"total":"433738","photo":[{"id":"13721741393","owner":"31558746@N00","secret":"1965a3793c","server":"5117","farm":6,"title":"Candy corn","ispublic":1,"isfriend":0,"isfamily":0},{"id":"13721755993","owner":"31558746@N00","secret":"c4eb729500","server":"2938","farm":3,"title":"Candy corn","ispublic":1,"isfriend":0,"isfamily":0},{"id":"13722064924","owner":"31558746@N00","secret":"b8662de0bb","server":"3723","farm":4,"title":"7-Layer Candy Dip","ispublic":1,"isfriend":0,"isfamily":0}]},"stat":"ok"})

他们正在使用JSONP并将回调设置为jsonFlickrApi

答案 1 :(得分:0)

这是一个如何设置回调的示例。

$.ajax(url, { dataType: 'jsonp', jsonp: 'jsoncallback' })
    .then(function(data, status, xhr) {
        console.log(status);
        console.log('success (promises): ' + data.name);
}, function(xhr, status, error) {
    console.log('failed (promises): ' + error);
});

通过设置jsonp:'jsoncallback',您可以访问回调内容。