2014-06-17 79 views
0

我有一個靜態json文件myjson.json已經使用JSONLint進行了驗證。Backbone:將靜態json文件添加到集合時出錯

我試圖用這個靜態JSON將數據添加到一個集合,但我不斷收到同樣的錯誤:

XMLHttpRequest cannot load file:///C:/Testing/app/scripts/src/myjson.json. Received an invalid response. Origin 'null' is therefore not allowed access.

我不知道爲什麼在獲取success()不點火。

我的文件夾結構看起來像這樣

->index.html 
->app 
    ->scripts 
     ->src 
      ->main.js 
      ->myjson.json 
     ->views 
      ->app.js 
     ->models 
      ->ModelAndCollection.js 

內ModelAndCollection.js:

define(['backbone'], function(Backbone) { 

    var TheModel = Backbone.Model.extend({ 

    }); 

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

    url: './app/scripts/src/item-data.json' 
    }); 

    return TheCollection; 

}); 

內App.js

define(['backbone', '../models/ModelAndCollection'], function(Backbone, ModelAndCollection) { 

    var App = Backbone.View.extend({ 
    initialize: function() { 

     this.collection = new ModelAndCollection(); 

     console.log('initialize!!!'); 

     this.collection.fetch({ 
     success: function (data) { 
      console.log(data); 
     }, 
     error: function() { 
      console.log('error'); 
     } 
     }); 
    } 
    }); 

    return App; 

}); 

回答

0

這就像你正在運行沒有問題一個服務器,並嘗試從文件系統中加載AJAX文件。

,如果你在Web服務器上運行這個程序,它會得到解決,最容易做的事情是,如果你是在Windows還是在Mac/Linux上安裝nodejsnpm install -g http-server,然後就進入安裝XAMPP或其中之一8080

然後一切都會:在您託管文件,並在控制檯中寫

http-server

將加載了一個服務器的端口8080,你可以從本地主機到達它的目錄。

祝你好運!

+0

謝謝!我沒有意識到這一點。有沒有方法可以將.json文件添加到集合中,而無需對服務器執行ajax調用?這是我第一次嘗試使用靜態文件。 – Mdd

+0

您可以使用腳本標籤或初始化程序將其添加到頁面本身,但最好的選擇是網絡服務器。 – gmaliar

相關問題