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 相关文章推荐
基于jquery的direction图片渐变动画效果
May 24 Javascript
Javascript Ajax异步读取RSS文档具体实现
Dec 12 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 Javascript
vue之将echart封装为组件
Jun 02 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
May 07 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
微信小程序实现搜索框功能及踩过的坑
Jun 19 Javascript
快速掌握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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
详解Python中的文件操作
2021/01/14 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
JAVA中运算符的分类及举例
2015/09/12 面试题
妇科医生自荐信
2013/11/05 职场文书
跳槽求职信范文
2014/05/26 职场文书
教师求职自荐书
2014/06/14 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
天河观后感
2015/06/11 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
Python 正则模块详情
2021/11/02 Python