2014-04-08 61 views
0

我看不到這是什麼問題。使用backbone.js在不同的服務器上獲取數據

我試圖在不同的服務器上獲取數據,集合中的url是正確的,但返回一個404錯誤。當試圖獲取數據時,錯誤函數被觸發並且沒有數據被返回。返回數據的php腳本能夠按照預期給出輸出結果。任何人都可以看到我的代碼有什麼問題嗎?

感謝提前:)

// function within view to fetch data 

fetchData: function() 
{ 
    console.log('fetchData') 
    // Assign scope. 
    var $this = this; 
    // Set the colletion. 

    this.collection = new BookmarkCollection(); 
    console.log(this.collection) 
    // Call server to get data. 
    this.collection.fetch(
    { 
     cache: false, 
     success: function(collection, response) 
     { 
      console.log(collection) 
      // If there are no errors. 
      if (!collection.errors) 
      { 

       // Set JSON of collection to global variable. 
       app.userBookmarks = collection.toJSON(); 

       // $this.loaded=true; 
       // Call function to render view. 
       $this.render(); 

      } 
      // END if. 
     }, 
     error: function(collection, response) 
     { 
      console.log('fetchData error') 
      console.log(collection) 
      console.log(response) 
     } 
    }); 
}, 

// end of function 

型號和收集:

BookmarkModel = Backbone.Model.extend(
{ 
    idAttribute: 'lineNavRef' 
}); 

BookmarkCollection = Backbone.Collection.extend(
{ 
    model: BookmarkModel, 

    //urlRoot: 'data/getBookmarks.php', 
    urlRoot: 'http://' + app.Domain + ':' + app.serverPort + '/data/getBookmarks.php?fromCrm=true', 

    url: function() 
    { 
     console.log(this.urlRoot) 
     return this.urlRoot; 
    }, 

    parse: function (data, xhr) 
    { 
     console.log(data) 
     // Default error status. 
     this.errors = false; 

     if (data.responseCode < 1 || data.errorCode < 1) 
     {    
      this.errors = true; 
     } 

     return data; 
    }  
}); 

回答

-1

這是一個跨域請求 - 沒有做不到的。將需要使用本地腳本並使用curl訪問其他域上的腳本。

+0

儘管事實上你不能用AJAX調用進行跨域請求,但並不意味着它不能通過其他技術來完成。你可以使用JSONP。 –

0

您可以使用JSONP進行請求(請閱讀此處:http://en.wikipedia.org/wiki/JSONP)。

爲了更好地實現它使用骨幹,只需做到這一點:

var collection = new MyCollection(); 

collection.fetch({ dataType: 'jsonp' }); 

您後端必須準備好這樣做。服務器將收到由jQuery生成的回調名稱,並傳遞給查詢字符串。所以服務器必須迴應:

name_of_callback_fuction_generated({ YOUR DATA HERE }); 

希望我幫了忙。

相關問題