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 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
XmlUtils JS操作XML工具类
Oct 01 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
一个简单的js树形菜单
Dec 09 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
jQuery实现的背景动态变化导航菜单效果
Aug 24 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
如何用JavaScipt测网速
May 09 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
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php 的反射详解及示例代码
2016/08/25 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
Python中字典映射类型的学习教程
2015/08/20 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python实现Flappy Bird源码
2018/12/24 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
python实现XML解析的方法解析
2019/11/16 Python
python数据爬下来保存的位置
2020/02/17 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
乡镇消防安全责任书
2014/07/23 职场文书
组工干部演讲稿
2014/09/02 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
家长给老师的感谢信
2015/01/20 职场文书
企业介绍信范文
2015/01/30 职场文书
个人工作违纪检讨书
2015/05/05 职场文书