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的一种模块模式
Mar 22 Javascript
JavaScript CSS修改学习第三章 修改样式表
Feb 19 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
Angular2学习教程之ng中变更检测问题详解
May 28 Javascript
vue弹窗组件的实现示例代码
Sep 10 Javascript
JavaScript中构造函数与原型链之间的关系详解
Feb 25 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 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
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
yii用户注册表单验证实例
2015/12/26 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PHP反射基础知识回顾
2020/09/10 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
python实现聊天小程序
2018/03/13 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
实时获取Python的print输出流方法
2019/01/07 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
详解python的super()的作用和原理
2020/10/29 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Python基于execjs运行js过程解析
2020/11/27 Python
python RSA加密的示例
2020/12/09 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
同事打架检讨书
2014/02/04 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
公务员诚信承诺书
2014/05/26 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
用Python实现Newton插值法
2021/04/17 Python
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫