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 相关文章推荐
ExtJS 下拉多选框lovcombo
May 19 Javascript
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
May 20 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 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
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
jquery表单验证使用插件formValidator
2012/11/10 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python实现简单的代理服务器
2015/07/25 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python面向对象 反射原理解析
2019/08/12 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
创联软件面试题笔试题
2012/10/07 面试题
机关门卫岗位职责
2013/12/30 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
家长会演讲稿
2014/04/26 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
三严三实对照检查材料
2014/09/22 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
政风行风评议心得体会
2014/10/21 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2016党校培训心得体会
2016/01/07 职场文书
宪法宣传标语100条
2019/10/15 职场文书