一:在接触js项目的时候,会有一个疑问,为什么这些项目都要使用node.js来启动项目,以服务形式去访问(或者使用tomcat也可以)
以下转自:https://www.cnblogs.com/lishanlei/p/10707853.html
在浏览器中,为了安全,让服务只能获取服务端的资源,也就是不能随意获取本地资源,否则用户使用浏览器就不安全,本地东西容易被窃取。
关于在JS中AJAX导致跨域问题的解决
在部署一个原声的前端项目的时候,请求该服务器后端接口时发现出现了CORS跨域的问题,但是服务端已经做了同源策略的兼容,常见问题,遂记录。
报错信息:
XMLHttpRequest cannot load http://xxxx.cn. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.
错误分析:
- 这是由于ajax的跨域访问引起的
- ajax没有经过服务器而直接访问请求,使用了file协议
通俗的说,就是没有在服务器环境中运行含有ajax方法的页面,而是类似于浏览器直接打开的形式运行该页面,这样子并没有使用http协议,而是直接使用了file协议。
本地页面请求远程服务端时,默认使用http://协议,但是本地页面中的ajax方法请求本地时,默认的是file:///协议,而file协议是不予许跨域请求的,所以在请求时,请求的URL格式类似于:
http://xxxx.cn/xxxxx
在请求的url前一定要加上http://
二:js中读取json文件,一般使用ajax方式,所以启动项目需要使用node.js来启动。
以下是关于json的读取:转自:https://blog.csdn.net/ClearLoveQ/article/details/90480207
1.首先编写一个json文件:demo.json
[
{
"name":"张三",
"sex":"男",
"email":"zhangsan@123.com"
},
{
"name":"李四",
"sex":"男",
"email":"lisi@123.com"
},
{
"name":"王五",
"sex":"女",
"email":"wangwu@123.com"
}
]
2.js读取json文件
<script>
window.onload = function () {
var url = "demo.json"/*json文件url,本地的就写本地的位置,如果是服务器的就写服务器的路径*/
var request = new XMLHttpRequest();
request.open("get", url);/*设置请求方法与路径*/
request.send(null);/*不发送数据到服务器*/
request.onload = function () {/*XHR对象获取到返回信息后执行*/
if (request.status == 200) {/*返回状态为200,即为数据获取成功*/
var json = JSON.parse(request.responseText);
for(var i=0;i<json.length;i++){
console.log(json[i].name);
}
console.log(json);
}
}
}
</script>
3.我的文件位置
4.用Ajax也是可以的
<script type="text/javascript">
var Ajax = function ()
{
$.getJSON ("demo.json", function (data)
{
$.each (data, function (i, item)
{
console.log(item.name);
});
});
}();
</script>
$.ajax({
url: "demo.json",//json文件位置,文件名
type: "GET",//请求方式为get
dataType: "json", //返回数据格式为json
success: function(data) {//请求成功完成后要执行的方法
//给info赋值给定义好的变量
var pageData=data;
for(var i=0;i<data.length;i++){
console.log(pageData[i].name);
}
}
})
————————————————
版权声明:本文为CSDN博主「ClearLoveQ」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ClearLoveQ/article/details/90480207