2014-02-18 55 views
1

我正在使用reddit API在backbone.js應用中填充模型和集合。在主幹返回中使用JSONP獲取reddit註釋HTML

要填充的集合,我用其中的偉大工程同步方法JSONP請求:

收藏:

sync: function(method, model, options) { 
    var params = _.extend({ 
     type: 'GET', 
     dataType: 'jsonp', 
     url: 'http://www.reddit.com/r/gif/.json&jsonp=', 
     processData: false 
    }, options); 

    console.log('fetching for collection') 
    return $.ajax(params); 
    }, 

然而,當我用同樣的方法來獲取一個單獨的鏈接,響應是HTML而不是JSON。

型號:

sync: function(method, model, options) { 
    var params = _.extend({ 
     type: 'GET', 
     dataType: 'jsonp', 
     url: 'http://www.reddit.com/r/gif/comments/1y1edn/.json&jsonp=', 
     processData: false 
    }, options); 

    console.log('fetching for model') 
    return $.ajax(params); 
    }, 

爲什麼在模型和JSON用於收集reddit的API返回的HTML?

+0

您是否測試過沒有Backbone的兩條鏈路? –

+0

嘗試從您的網址中刪除&jsonp =。當我在瀏覽器中打開http://www.reddit.com/r/gif/comments/1y1edn/.json時,我看到了json。我不確定爲什麼你的第一個請求在工作,因爲它在瀏覽器中看起來像404。 reddit api是否需要jsonp回調函數名稱爲'jsonp'?如果是這樣,jQuery ajax已經將&callback =添加到jsonp請求中,因此可以嘗試將'jsonp'選項設置爲'jsonp':https://api.jquery.com/jQuery.ajax/ – mcbex

+0

@mcbex謝謝搞定了。從url中刪除「&jsonp =」,並將其作爲查詢的一個選項添加是解決方案。乾杯! – patmood

回答

1

這似乎已經在您的問題的評論中討論過,但錯誤是您在URL中使用&而不是?。您需要將URL路徑(/r/gif/comments/xxxxxx/.json)中的查詢參數(jsonp=some_js_func)與?分開。