ajax-<请教>直接使用Ajax来拼接html页面,这样的做法有什么优劣,可行么?

问题描述

<请教>直接使用Ajax来拼接html页面,这样的做法有什么优劣,可行么?

例如:

 $.ajax({
            url:"http://"+host+"/cicro/notice_front/load_page.do",
            type:"post",
            data:{"page":0},
            dataType:"json",
            async:false,
            success:function(result){
            $('#news_box').empty();
            $('#news_box').append('<div class="news comWidth"><div class="news_top"><div class="news_top_top"><img class="news_top_left fl" src="../images/main_titles2.jpg" width="360" height="75"><p class="news_top_right fr"><img src="../images/hzhb04.png">当前位置:<a href="../cicro_fore/index.html">首页</a><img src="../images/hzhb04.png">通知公告</p></div></div><!-- 公告列表 --><div class="news_list" id="news_list"></div><div id="pageGro" class="cb"></div></div>');
            var count = 1;
            for(i = 0; i < result.data.length; i++){
                var s = result.data[i];
                var content = s.content;
                var title = s.title;
                var createtime = s.createtime.substring(0, 19);
                var p=s.state;
                if(p==1){
                    var str="未发布"
                }else{
                    str="已发布";
                }
                $('.news_list').append('<a href="javascript:go('+s.id+');" class="title"><div class="news_content"><img src="../images/hzhb04.png">'
                        +title+'<i>'+createtime+'</i></div></a>');
            }
            var j;
            var nowPage=0;//当前页
            var listNum=10;//每页显数
            var PagesLen;//总页数
            var PageNum=4;//分页链接接数(5个)
            var count=result.count;
            PagesLen=Math.ceil(count/listNum);
            //分页链接变换
            strS='<a style="margin:0 3px;font-size:14px;padding:4px 8px;border:1px solid #999;" href="###" onclick="upPage(0)">首页</a>  ' ;
            var PageNum_2=PageNum%2==0?Math.ceil(PageNum/2)+1:Math.ceil(PageNum/2)
            var PageNum_3=PageNum%2==0?Math.ceil(PageNum/2):Math.ceil(PageNum/2)+1
            var strC="",startPage,endPage;
            if (PageNum>=PagesLen) {startPage=0;endPage=PagesLen-1}
            else if (nowPage<PageNum_2){startPage=0;endPage=PagesLen-1>PageNum?PageNum:PagesLen-1}//首页
            else {startPage=nowPage+PageNum_3>=PagesLen?PagesLen-PageNum-1: nowPage-PageNum_2+1;var t=startPage+PageNum;endPage=t>PagesLen?PagesLen-1:t}
            for (var i=startPage;i<=endPage;i++){
            if (i==nowPage)
                strC+='<a href="###" style="color:white;margin:0 3px;font-weight:700;font-size:14px;padding:4px 8px;border:1px solid #3c90d9;background-color:#3c90d9;" onclick="upPage('+i+')">'+(i+1)+'</a> '
            else
                strC+='<a style="font-size:14px;padding:4px 8px;border:1px solid #999;" href="###" onclick="upPage('+i+')">'+(i+1)+'</a> '
            }
            strE=' <a style="margin:0 3px;font-size:14px;margin:0 3px;padding:4px 8px;border:1px solid #999;" href="###" onclick="upPage('+(PagesLen-1)+')">尾页</a>  '
            strE2=nowPage+1+"/"+PagesLen+"页"+"  共"+j+"条"
            document.getElementById("pageGro").innerHTML=strS+strC+strE
            },
            error:function(){alert("服务器异常.");}
        });

解决方案

优势比用DOM API创建来得简单
缺点好多:阅读性太差,可再编辑性差,而且容易出错(内容太长单引号、双引号太多容易出错);
建议每个节点名称变量,加上注释,再进行拼接,这样既不容易出错,后期修改也方便,阅读性好代码整洁号,还根据不同的业务逻辑组装不同的html。如下图:

解决方案二:

拼接时注意自付出的闭合,特别是加事件时参数为字符串时的转义之类,要不很容易字符串不闭合报错,优势肯定是比用DOM API创建来得简单

解决方案三:

这样拼接代码阅读性太差,非必要不建议

解决方案四:

阅读性较差,,但是写起来方便

解决方案五:

阅读性差,但是代码量少

解决方案六:

可以用什么代替呢 现在我们有个需求是不希望出现这种大段的字符串 让使用模板 求思路

时间: 2025-01-29 14:34:23

ajax-&amp;lt;请教&amp;gt;直接使用Ajax来拼接html页面,这样的做法有什么优劣,可行么?的相关文章

掌握Ajax第2部分:使用JavaScript和Ajax发出异步请求

ajax|javascript|请求|异步 Brett McLaughlin ,作家,编辑,O'Reilly Media Inc.2006 年 2 月 16 日 多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的 HTML 页面.常常是点击一个按钮,等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程.有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了.本文中,Brett McLaughlin 介绍了如何创建能够适

Ajax -- 困惑者指南,第1部分:Ajax工具和技术综述

Ajax (Asynchronous JavaScript + XML) 编程技术正逐渐主导 Web 应用程序开发领域.每天都有新的开发人员步入 Ajax 开发的殿堂,他们拥有不同的开发背景.本系列的第 1 部分将提供来自 IBM Ajax 开发人员专家组的 Ajax 开发资源备忘单.作者根据他们自己的 ramp-up 经验为您提供了一些实用的信息,这些信息可以帮助您快速进入高效 Ajax 开发的轨道. Ajax 是一种 Web 应用程序客户机技术,它结合了 JavaScript.层叠样式表(C

掌握Ajax,第2部分: 使用JavaScript和Ajax发出异步请求

在 Web 请求中使用 XMLHttpRequest 多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的 HTML 页面.常常是点击一个按钮, 等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程.有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了.本文中,Brett McLaughlin 介绍了如何创建能够适应不同浏览器的 XMLHttpRequest 实例,建立和发送请求,并响应服 务器. 本系列的上一期文章(

求人帮忙 扩展思路 我只用过ajax 登陆和AjaxControlToolkit 大家所说的学习ajax是学这两点吗? 用ajax如何判断数据库里是否存在 **数据呢

问题描述 求人帮忙扩展思路我只用过ajax登陆和AjaxControlToolkit大家所说的学习ajax是学这两点吗?用ajax如何判断数据库里是否存在**数据呢 解决方案 解决方案二:d解决方案三:用过,感觉MS的东东普遍特点是能耗太高,不太环保.

jquery ajax方法调用在session超时以后如何跳转到登录页面?

问题描述 jquery ajax方法调用在session超时以后如何跳转到登录页面?session超时以后虽然被过滤器过滤到了,但是并不会跳转到登录页面请求具体的解决方法.我参考了这篇文章,但是我调用ajaxStart不起作用.http://www.blogjava.net/vickzhu/archive/2009/06/05/280223.htmlext jquery 用户访问超时(ext session过期) 解决两种情况下的用户访问超时.a)普通http请求的session超时.b)异步h

通过Ajax方式上传文件使用FormData进行Ajax请求_AJAX相关

通过传统的form表单提交的方式上传文件: Html代码  <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定文

请教,c# 能不能做到像word那样页面是A4纸大小,还能增加页面?

问题描述 请教,c#能不能做到像word那样页面是A4纸大小,还能增加页面?不知道用什么算法能实现,请教了. 解决方案 解决方案二:你所说的c#是指的什么东东啊?解决方案三:用c#编程,像知道WORD和页面是怎么做的?另外用c#能不能实现?谢谢大师!解决方案四:你说的是用C#输出word吗?解决方案五:你是说用C#如何实现:像word那样的打印设置吗?解决方案六:你想用C#做个Word吗?

通过Ajax方式上传文件使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: Html代码 <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定文件

PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)

首先来看一下我已经实现的效果图: 消费者页面:(本篇随笔) (1)会显示店主的头像 (2)当前用户发送信息显示在右侧,接受的信息,显示在左侧 店主或客服页面:(下一篇随笔) (1)在左侧有一个列表 ,会显示所有与店主对话的顾客:该列表可以移动:有新消息时会提示:也可以清空该聊天记录 (2)点击列表里的顾客进入右边的对话框界面,显示与该顾客的聊天信息 在实现功能之前,来说一下我用到的两张表: 解释一下:bkid在此处没有用到:isok列是用来判断消息是否已读,未读为0: 现在,来说一下步骤:(分前