我正在使用风帆和护照创建一个用于身份验证的网站。我在代码中使用Jquery和骨干时遇到了问题。当我试图将它们与帆一起使用时,似乎两者都失败了。在用户身份验证之后,我尝试做的是将用户路由到存在所有脚本的主页。我将所有.js文件放在layout.ejs中,例如:
<link rel="stylesheet" href="styles/bootstrap-theme.min.css">
<script type="text/javascript" src="js/jquery.js"></script>
大多数css和js文件都有效,但我遇到了backbone和jquery(以及jquerymobile)的问题。我使用的是jQuery 1.10.2和主干1.1.0。知道什么可能是错的吗?
在骨干代码中,我试图通过php文件发出Ajax请求。
var ProfileList = Backbone.Collection.extend({
model: ProfileModel,
url: 'data.php'
});
我到底要做什么?要在路线中添加网址?或者我应该在哪里放置data.php文件?
编辑:我已经改变了gruntfile.js将jquery放在顶部并且工作正常。现在问题依然存在。我猜我的麻烦出现了,因为我要求使用护照和骨干访问不同的域名。当我使用data.php请求数据时,我调用以下jquery代码:xhr.send( ( s.hasContent && s.data ) || null ): jquery.js (line 8706)
这是一个Ajax XMLHttpRequest发送请求http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp。我通常尝试从两个域localhost和localhost:1337请求数据,因此出现跨域问题。 我发现cors(跨源共享资源共享)可以处理这个问题。知道如何在sails.js中允许cors吗?
编辑:在route.js文件中,我将主页cors转为true:
'/secondscreen': {
view: 'secondsocialscreen/index',
cors: true
}
我仍然收到同样的错误。我还在config / cors.js文件中将变量AllRoutes更改为true。我的骨干文件工作(使用控制台检查),但我无法获取数据。 Config / cors.js文件如下:
module.exports.cors = {
// Allow CORS on all routes by default? If not, you must enable CORS on a
// per-route basis by either adding a "cors" configuration object
// to the route config, or setting "cors:true" in the route config to
// use the default settings below.
allRoutes: true,
// Which domains which are allowed CORS access?
// This can be a comma-delimited list of hosts (beginning with http:// or https://)
// or "*" to allow all domains CORS access.
origin: '*',
// Allow cookies to be shared for CORS requests?
credentials: true,
// Which methods should be allowed for CORS requests? This is only used
// in response to preflight requests (see article linked above for more info)
methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
// Which headers should be allowed for CORS requests? This is only used
// in response to preflight requests.
headers: 'content-type'
};
我错过了什么吗?好吧我觉得我找到了一些东西。实际上我正试图指向一个home.ejs,我定义了一个fetching.js(从data.php获取数据和模型控制器视图的定义),其中存在骨干代码。这个文件是否可以按原样运行,或者我从风帆中定义我的MVC?此外,我发现我正在尝试从localhost:1337(sails服务器)获取数据。但是我想从apache localhost获取数据。如何在运行sails时向apache服务器请求数据?在萤火虫中,我收到了上述内容:
GET http://localhost/sitec/fetchdata.php?widget=highlights 200 OK 47ms jquery.js (line 8706)
GET http://localhost/sitec/fetchdata.php?widget=sentiment 200 OK 47ms jquery.js (line 8706)
GET http://localhost/sitec/fetchdata.php?widget=tagsCloud 200 OK 47ms jquery.js (line 8706)
作为响应而不是拥有json数据的对象(data.php返回json文件),实际上我可以看到data.php文件的代码。怪异
答案 0 :(得分:3)
Sails.js默认使用grunt来添加CSS和JS文件。手动添加布局不是一个好主意。在主根中的文件Gruntfile.js中,您将看到两个重要的数组--cssFilesToInject和jsFilesToInject。要按正确的顺序加载文件,只需按照您的需要添加它们。
var jsFilesToInject = [
// Below, as a demonstration, you'll see the built-in dependencies
// linked in the proper order order
// Bring in the socket.io client
'linker/js/socket.io.js',
// then beef it up with some convenience logic for talking to Sails.js
'linker/js/sails.io.js',
// A simpler boilerplate library for getting you up and running w/ an
// automatic listener for incoming messages from Socket.io.
'linker/js/app.js',
// *-> put other dependencies here <-*
'path_to_jquery',
'path_to_underscore',
'path_to_backbone',
// All of the rest of your app scripts imported here
'linker/**/*.js'
];
答案 1 :(得分:3)
我们通过修改config / routes.js
在风帆中使用CORSmodule.exports.routes = {
&#39; / *&#39;:{ 科尔斯:是的 }
}