AngularJS使用ng-inlude指令加载页面失败的原因与解决方法


Posted in Javascript onJanuary 19, 2017

本文实例讲述了AngularJS使用ng-inlude指令加载页面失败的原因与解决方法。分享给大家供大家参考,具体如下:

AngularJS中提供的ng-include指令,很类似于JSP中的<jsp:include>用来将多个子页面合并到同一个父页面中,避免父页面过大,可读性差,不好维护。

父页面parent.html代码如下:

<html>
 <head>
  <script src="angular-1.2.2/angular.js"></script>
  <script>
   function rootController($scope,$rootScope,$injector)
   {
    $rootScope.name = "aty";
    $rootScope.age = 25;
   }
  </script>
 </head>
 <body ng-app ng-controller="rootController">
    <h1>Hello, {{name}}!</h1>
    <h1>Hello, {{age}}!</h1>
  <div id="included" ng-include="'child.html'">
      <input type="button" value="2"/>
    </div>
 </body>
</html>

被包含的子页面child.html代码如下:

<div>
    <h1>included, {{name}}!</h1>
    <h1>included, {{age}}!</h1>
</div>

我用IE11和Chrome39运行parent.html,发现child.html页面不能包含到parent.html中。IE下报错信息如下:

Error: 拒绝访问。
   at Anonymous function (file:///D:/learn/angular-1.2.2/angular.js:7852:7)
   at sendReq (file:///D:/learn/angular-1.2.2/angular.js:7720:9)
   at serverRequest (file:///D:/learn/angular-1.2.2/angular.js:7454:9)

chrome下报错信息如下:

XMLHttpRequest cannot load file:///D:/learn/include.html.
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///D:/learn/include.html'.

IE下的提示有些晦涩,不过chrome提示很明显:不能跨域访问。通过上面的错误提示,可以看到:使用ng-include指令的时候,会用到AJAX请求XMLHttpRequest。但是我们是直接用浏览器打开的parent.html,并没有通过web容器访问,所以存在跨域访问问题,加载child.html也就失败了。解决办法很简单:将代码部署到tomcat等web容器下,通过http访问即可。

平时在练习JavaScript或者是JS框架的时候,一版都是使用比较轻量级的工具,不会使用像Eclipse之类IDE,我一般使用Notepad++编写js代码。Notepad++可以方便地调用本机安装的浏览器。像ng-include这样的指令,必须要有web容器的支持。可以使用前端开发神器webstorm,该工具运行html的时候,会自动启动内置的web容器,这样ng-include指令就不会报错了。

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
模拟用户操作Input元素,不会触发相应事件
May 11 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
js实现贪吃蛇小游戏(容易理解)
Jan 22 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
基于vue.js的分页插件详解
Nov 27 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
基于Vue实现拖拽效果
Apr 27 Javascript
JS非行间样式获取函数的实例代码
Jun 05 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
Apr 19 Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 Javascript
jquery自定义组件实例详解
Dec 31 jQuery
快速掌握jQuery插件开发
Jan 19 #Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 #Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 #Javascript
使用JavaScript触发过渡效果的方法
Jan 19 #Javascript
详解支持Angular 2的表格控件
Jan 19 #Javascript
原生JS实现几个常用DOM操作API实例
Jan 19 #Javascript
JS生成一维码(条形码)功能示例
Jan 19 #Javascript
You might like
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
用php+mysql一个名片库程序
2006/10/09 PHP
php 全文搜索和替换的实现代码
2008/07/29 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
golang与PHP输出excel示例
2016/07/22 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
Python中的元类编程入门指引
2015/04/15 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
django中静态文件配置static的方法
2018/05/20 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
教师节宣传方案
2014/05/23 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
Pytorch 如何实现常用正则化
2021/05/27 Python