Div里面载入另一个页面的实现(Ajax取代框架)2014-09-04 17:22:46

( 46人已投票,[高质量] )
分享:
31.3K

随着框架越来越不火了,HTML5就不对框架支持了,iframe也只有url了,Div就担当了此大任

DIV+CSS在页面部局确实也很让人满意,使用也更方便

今天突然遇到一个问题,那就是需要导入另一个页面显示在当前页的Div里面

我当然可以用iFrame啥的,不过那不是我想要的方法

在网上查了半天,方法也很多,不过有不满意的地方,因为多数都会用JQuery

呆会在下部分会给出jQuery的实现

而且因为要导入的页面还有一些特效,而不是单纯的数据,例如,我导过来的页面样式都要保持!

我要实现的是教你用Ajax实现,大家都知道Ajax可以异步随时不用刷新页面而更新数据,功能也很是强大

而且在未来HTML5上也对Ajax有了更好的支持,

下面我就教你如何使用Ajax快速达到目的:


使用原生的Ajax,只需二步:

1:下载Ajaxjs文件(如果没有可以下载):

Div里面载入另一个页面的实现(Ajax取代框架) ajaxrequest.rar [登录雪炭网后可见]


2:页面导入这个js文件

<script type="text/javascript" src="ajaxrequest.js"></script>


完成了,你已经成功迈入了阿假科思大门了


接着来完成任务吧:

细节说明:Apache / Ajax / js

页面中添加一个目标地址:例如    

<div id="des"></div>

好啦,另一个页面的全部代码呆会就导在这个叫des的DIV中间;我们要导入的就是页面abc.html  

//用来设计模板页很不错哦


添加JS代码了:

<script type="text/javascript">
var ajaxobj=new AJAXRequest;
//创建AJAX对象,类在刚刚那个文件里了
ajaxobj.method="GET"; // 设置请求方式为GET
ajaxobj.url="templat/main.html"
/*响应的URL,以后可以改为一些动态处理页,会用Ajax的都知道,
这在页里可以有目的返回不同的数据
设置回调函数,输出响应内容,因为是静态页(这是我的需求嘛)
所以所有内容都过来了*/
ajaxobj.callback=function(xmlobj) {
document.getElementById('des).innerHTML = xmlobj.responseText;
//可要看好这句话哦
}
ajaxobj.send();// 发送请求
</script>


到此为止,目的达成,页面是不是完全加载进来了,右健查看源代码,还很好的隐藏了abc的url,甚至连字都隐藏了,太神奇了,hoho

用这开发模板,不就是一个网址了吗,连个?号都不让看啊,就是一个字:真爽!

而且样式也都是设好的样式,也可以把js用function aa{}扩起来在onload(javascript:aa())自由发挥

最后说明一下:ajax还需要一些浏览器检查这里是教最快上手,我在FF火狐测试过了一切都好,而在IE可能在样式上会出点小问题,不过门都入了,

慢慢就都会了,不是吗


下面是教你另一种方式:JQuery方式载入(鼓励这种方式处理)

方式一:首先引入jquery的JS文件,以下为google提供的官方的jQuery地址:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

[注]如果加载不了google的东西,用我这个1.8.3版本也行:

Div里面载入另一个页面的实现(Ajax取代框架) jquery-1.8.3.min.zip [登录雪炭网后可见]


更多jQuery内部原理见此牛贴:http://www.cnblogs.com/skylaugh/archive/2006/12/18/595563.html


导入js 添加代码,直接写个js函数(因为无论jquery还是Ajax都是JS范畴)

<script language="javascript" type="text/javascript">
<!--
function jump(){
  $("#mainBody").load("./templat/main.html",function(){ $("#mainBody").fadeIn(100);}
);
-->
</script>


直接在要触发的地方加上onclick="jump();" 就行了,发现这个浏览器支持能好点


更多load用法请参阅完整说明:

//http://www.cnblogs.com/mslove/archive/2009/05/07/1452098.html


方式二:这个方法是使用jquery的ajax

var parames={
"type1":"paramer1","type2":"paramer2"};
$.ajax({
url:'myTest.php',
type:'post',
dataType:'html',
data:parames,
error: function(){alert('error');},
success:function(data){
$("#myDiv").html(data);
}
});


这种方式也可以,个人喜好选着用吧,参数自由修改,jQuery也挺火的。



注:如果有问题请一步步按我说的来,看看哪步疏漏了,以上内容皆经过我测试







  • 花花世界的头像
    花花世界 - 2014-11-26 20:02:18

    本文是本人原创作品,转载请注明原链接,鄙视抄我文章不注明出处的人;
    文章若是喜欢的话可以分享到你的空间去,或是收藏起来;
    各位如果对内容有任何疑问可以给我私信,我帮你解决。

    花花世界的头像

    X
  • 要啥自行车的头像
    要啥自行车 - 2015-03-22 21:54:52

    学习了~

    要啥自行车的头像

    X
  • 柳岸花明的头像
    柳岸花明 - 2015-04-14 12:26:21

    不错,顶一个!

    柳岸花明的头像

    X
  • 花花的头像
    花花 - 2015-05-11 09:42:09

    楼主辛苦了,支持原创!

    花花的头像

    X
  • Jennifer的头像
    Jennifer - 2015-06-03 10:47:52

    支行原创,帮助很大,大赞!

    Jennifer的头像

    X
  • 520的头像
    520 - 2015-09-07 10:37:45

    加载完的页面,页面里的js不好用了,怎么把js也拿过来,谢谢!

    520的头像

    X
  • Fang、L。爱的头像
    Fang、L。爱 - 2015-09-08 17:38:05

    第一种方法显示不出来图片。。怎么办呀。

    Fang、L。爱的头像

    X
  • 花花世界的头像
    花花世界 To: 520 - 2015-09-09 16:38:54

    啊?js不好用是什么意思,用FireBug调试一下,把错误发上来我看看,js拿出来提取呗?放在主页的上去script标签卡住就行了,测好了再集成一个提取为.js文件

    花花世界的头像

    X
  • 花花世界的头像
    花花世界 To: Fang、L。爱 - 2015-09-09 16:41:18

    显示不了图片?看下url地址是不是错了(很可能发生),教你调试看一下,把返回的数据在前端用log.d("back:"+data);看一下返回的数据,那个img的src相对路径的话极可能不注意出错,或者你直接alert看一下。
    我要是你我就直接用一张网络图片测试一下是否是这个问题。

    花花世界的头像

    X
  • caihh的头像
    caihh - 2015-11-30 12:04:15

    谢谢楼主了,学习了。希望楼主多多分享自己的经验!

    caihh的头像

    X
  • 花花世界的头像
    花花世界 To: caihh - 2015-12-30 11:45:02

    不客气,谢谢支持,祝你进步!

    花花世界的头像

    X
  • 程序小王子的头像
    程序小王子 - 2016-03-05 09:22:03

    在谷歌浏览器上运行,出现跨域问题
    Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

    程序小王子的头像

    X
  • 花花世界的头像
    花花世界 To: 程序小王子 - 2016-03-08 14:47:09

    跨域了,为了安全会提示这个的,参考链接:http://wenda.snowcoal.com/lnqqjpk.html

    花花世界的头像

    X
  • orasoon的头像
    orasoon - 2016-07-30 15:37:15

    我用了咋完全没有反应?是我搞错了?

    orasoon的头像

    X
  • 花花世界的头像
    花花世界 To: orasoon - 2016-09-21 22:48:43

    搞错了没事,打开控制台,输出两句console.log(111);测试一下运行步骤,可能都没运行呢。
    文章很老了哈,若用jquery的话,是集成的,可以研究一下。

    花花世界的头像

    X
  • 342058655的头像
    342058655 To: 花花世界 - 2016-09-30 11:20:38

    我加了你为好友,我的问题就是不知道为什么360和谷歌用不了,只有火狐可以,请问这是什么原因??

    342058655的头像

    X
  • 花花世界的头像
    花花世界 To: 342058655 - 2017-01-04 22:26:31

    这个内容是很久的了,2014年的,最近我也没留意这些。你得调试一下,看看哪儿是不是不支持了,找到问题点再去解决,提醒一下,注意别受缓存影响。
    如果可以的话我还是推荐用jquery吧,集成度很高的,包的大小相对来说可以忽略。而且附带的功能还很强大;
    新时代了哦,为啥不试试html5的websocket呢。。。

    花花世界的头像

    X
头像

snowcoal
  • DIV加载页面
  • jQuery
  • Div载入另一个页面

收藏到我的私密空间

标题:Div里面载入另一个页面的实现(Ajax取代框架)

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限