Backbone没有从不同的主机获取JSON

时间:2015-07-22 19:18:57

标签: javascript php json rest backbone.js

我是RESTful概念的新手,现在学习Backbone,我遇到了一些问题。

现在我使用backbone.js在http://localhost上运行单页应用程序,API位于http://phalconapi(另一个vhost)。

http://phalconapi我有这个jsontest.php脚本返回JSON:

<?php
header("HTTP/1.1 200 OK");
echo json_encode( ['test'=>1] );

http://localhost,这是我的app.js启用主干。

var FlightsList = Backbone.Model.extend({
    //urlRoot: '/jsontest.php'
    urlRoot: 'http://phalconapi/jsontest.php'
});

var DashboardController = BackboneMVC.Controller.extend({
    name: 'dashboard',

    home: function() {
        var flights = new FlightsList();

        flights.fetch({
            success: function(flights) {
                alert(flights.toJSON());
                console.log(flights.toJSON());
            },
            error: function(model, xhr, options) {
                console.log('Fetch error');
            }
        });
    }
});

var router = new BackboneMVC.Router();

Backbone.history.start({pushState: true});

所以问题是,每当我将骨干网中的urlRoot设置为/jsontest.php并将该文件放在同一目录(在localhost中)时,它就可以正常工作。

但是当我将其更改为http://phalconapi/jsontest.php时,它就无效了。使用谷歌Chrome开发者工具我注意到“此请求没有可用的响应数据”消息。并且未使用/jsontest.php作为urlRoot显示在另一个测试中。它就在那里显示{"test":1}

1 个答案:

答案 0 :(得分:0)

通过在api上设置访问控制头来修复它:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: X-Requested-With');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');

这是一个CORS问题。谢谢Half Crazed!

如果有人也在使用Phalcon,请使用$response->setHeader()