主干不从不同的主机获取JSON
Backbone not fetching JSON from different host
我是RESTful概念的新手,现在正在学习Backbone,我遇到了一些问题。
现在我正在运行一个单页应用程序上http://localhost使用backbone.js和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}
通过在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问题。谢谢你半疯!
如果有人也在使用Phalcon,请使用$response->setHeader()
。
相关文章:
- 使用 javascript 从本地主机服务获取数据
- 获取主机 URL + 目标 URL 的时间
- 从服务器/主机获取HTML代码或显示广告代码
- 如何在angular JS中获取基本主机
- 单击时获取 href 的顶部主机名
- javascript 获取文件主机的主机名
- 在节点/快递中获取客户端主机名
- 如何在实用程序文件中获取已启动的快速应用程序的服务器主机和端口
- 从新创建的窗口中获取位置主机名
- 通过JS regex获取具有/en/的主机名
- Node.js-在AmazonEC2上获取主机IP地址
- 使用regex获取带点的主机名
- 使用本地主机/同一主机的http模块获取请求
- 获取使用主机名获取URL的脚本
- 从请求脚本的位置获取主机
- 客户端系统主机名未使用request.getRemoteHost()获取
- 如何获取来自不同主机的表的特定单元格的值
- 从NodeJS请求获取主机
- 通过Angular从Firebase主机获取JSONP文件
- 主干不从不同的主机获取JSON