精华内容
下载资源
问答
  • 我想用ajax里面的UpdatePanel实现局部刷新但是却出现布局错误。 求大神指教。 这是我用UpdatePanel包裹后的代码 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> ...
  • 我想在一个界面上显示四个下拉框,点击第一个中的一条数据的时候会自动查询并显示第二个框中的数据(第二个基于第一个),后两个也是同样的道理,我现在点击第二组的时候会把前面选择的...请问怎样才能实现呢,请教大神
  • html页面的局部刷新

    2014-03-07 17:08:00
    有时候我们在做一个...在这种情况下就需要用JS和XMLHttpRequest对象的配合实现,本片文章记录怎样才能做到整张网页的局部刷新以备日后回顾。 文章分为两部分:XMLHTTPRequest介绍;用XMLHTTPRequest和JavaScript...

          有时候我们在做一个动态/静态网页,网页中的某部分需要从服务器获取值但是不能把整个页面都提交到服务器,也就是要对页面做局部刷新,也就是对整个网页无刷新更新值。在这种情况下就需要用JS和XMLHttpRequest对象的配合实现,本片文章记录怎样才能做到整张网页的局部刷新以备日后回顾。

    文章分为两部分:XMLHTTPRequest介绍;用XMLHTTPRequest和JavaScript实现局部刷新。

    第一部分

    我们了解一下XMLHTTPRequest。

    XMLHTTPRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据。 XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。

    使用XMLHTTPRequest的时候我们不用太关心浏览器支持的问题。实际上,XMLHTTPRequest得到了所有现代浏览器较好的支持。唯一的浏览器依赖性涉及XMLHTTPRequest对象的创建。在IE5和IE6中,必须试用IE特定的ActiveXObject() 构造函数才能创建,但是现在还有多少人在用IE5和IE6呢?。。。

    简单了解什么是XMLHTTPRequest之后,我们看一下怎么创建XMLHTTPRequest对象。

    不同的浏览器要使用不同的方法创建XMLHTTPRequest对象:IE用ActiveObject创建,其它的浏览器用名为XMLHttpRequest的JavaScript内建对象。貌似看起来创建一个所有浏览器都支持的XMLHTTPRequest有点复杂,不过我们可以用以下简单的代码创建:

    var XMLHttp=null;//创建变量XMLHttp,作为XMLHTTPRequest对象

    if (window.XMLHttpRequest)//针对除IE之外的浏览器做判断,看是否能创建XMLHTTPRequest

    {

    XMLHttp=new XMLHttpRequest()//能的话就直接创建

    }else if (window.ActiveXObject)

    {

    XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")//如果不能,就是IE了,用ActiveXObject创建

    }

    以上代码中,在判断IE处使用了传入Microsoft.XMLHTTP这个参数创建XMLHTTPRequest对象,这个方法适用于IE5.5及更高版本,但是不是创建XMLHTTPRequest对象最快的方法,我们看改进后的:

     

    function GetXmlHttpObject()

    {

    var xmlHttp=null;

    try {

    // 针对Firefox, Opera 8.0+, Safari浏览器创建

    xmlHttp=new XMLHttpRequest();

    }

    catch (e)

    {

    // 不行的话就是IE了

    try {

    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//这个是最快的

    }

    catch (e) {

    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//为了以防万一,如果错误后我们再用慢的方式

    }

    }

    return xmlHttp;

    }

    上面这段代码,在对IE的判断上我们用XMLHttp=new ActiveXObject("Msxml2.XMLHTTP")创建,这在IE6+版本可用,如果错误,则用适合IE5.5的老方法创建。

    知道了怎样创建后,我们看一下XMLHTTPRequest的属性。

    XMLHTTPRequest有5个属性:readyState、responseText、responseXML、status、statusText。

    readyState

    这是HTTP请求的状态,值有5个,初次创建XMLHTTPRequest时是0,直到HTTP响应结束,这个值一直增加到4。这5个状态的名称和含义如下表:

     

     

    状态

    名称

    描述

    0

    Uninitialized

    初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。

    1

    Open

    open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。

    2

    Send

    Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。

    3

    Receiving

    所有响应头部都已经接收到。响应体开始接收但未完成。

    4

    Loaded

    HTTP 响应已经完全接收。

     

    这里要说明一下,readyState的值不会递减,除非在请求的过程中调用了abort() 或 open() 方法。每次值增加的时候都会触发onreadystatechange事件。

    responseText

    到目前为止从服务器接收到的响应体(不包括头部)。如果还没有接收到数据的话,就是空字符串。

    根据上一个属性,我们可以知道,当readyState值为3之前,responseText的值都为空,直到为4的时候,才是这个属性保存了完整的HTTP响应体。

    responseXML

    对请求的响应,解析为 XML 并作为 Document 对象返回。如果响应体不是“text/xml”返回null。

    Status

    由服务器返回的 HTTP 状态代码,如 200 表示成功,而 404 表示 "Not Found" 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常。

    statusText

    这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。也就是说,当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。

    以上是XMLHTTPRequest的属性,接下来,我们看一下它的方法。

    XMLHTTPRequest对象的方法有6个:abort()、getAllResponseHeaders()、getResponseHeader()、open()、send()、setRequestHeader()

    abort()

    这个方法是取消当前响应,关闭与服务器的连接并结束任何发生或没有发生的网络活动。

    一旦调用了这个方法,XMLHttpRequest对象会重置readState为0,一般会用在请求时间过长,响应不再必要的时候。

     

    getAllResponseHeaders()

    把 HTTP 响应头部作为未解析的字符串返回。

    如果 readyState 小于 3,这个方法返回 null。否则,它返回服务器发送的所有 HTTP 响应的头部。头部作为单个的字符串返回,一行一个头部。每行用换行符 "" 隔开。

    getResponseHeader()

    返回指定的 HTTP 响应头部的值。其参数是要返回的 HTTP 响应头部的名称。可以使用任何大小写来制定这个头部名字,和响应头部的比较是不区分大小写的。

    该方法的返回值是指定的 HTTP 响应头部的值,如果没有接收到这个头部或者 readyState 小于 3 则为空字符串。如果接收到多个有指定名称的头部,这个头部的值被连接起来并返回,使用逗号和空格分隔开各个头部的值。

    open()

    此方法是初始化HTTP请求参数,比如URL和HTTP的请求方法(get,post等)。

    send()

    试用传递给open()方法的参数发送HTTP请求。

    setRequestHeader()

    向一个打开但未发送的请求设置或添加一个 HTTP 请求。

    以上便是XMLHTTPRequest的所有方法,如果看到这里不太累的话,下面我们了解一下open()和send()方法怎么用。

    XMLHttpRequest.open()

    初始化 HTTP 请求参数

    语法

    open(method, url, async, username, password)method 参数是用于请求的 HTTP 方法。值包括 GET、POST 和 HEAD。

    url 参数是请求的主体。大多数浏览器实施了一个同源安全策略,并且要求这个 URL 与包含脚本的文本具有相同的主机名和端口。

    async 参数指示请求使用应该异步地执行,值为true和false。如果这个参数是 false,请求是同步的,后续对 send() 的调用将阻塞,直到响应完全接收。如果这个参数是 true 或省略,请求是异步的,且通常需要一个 onreadystatechange 事件句柄。

    username 和 password 参数是可选的,为 url 所需的授权提供认证资格。如果指定了,它们会覆盖 url 自己指定的任何资格。

    说明

    这个方法初始化请求参数以供 send() 方法稍后使用。它把 readyState 设置为 1,删除之前指定的所有请求头部,以及之前接收的所有响应头部,并且把 responseText、responseXML、status 以及 statusText 参数设置为它们的默认值。当 readyState 为 0 的时候(当 XMLHttpRequest 对象刚创建或者 abort() 方法调用后)以及当 readyState 为 4 时(已经接收响应时),调用这个方法是安全的。当针对任何其他状态调用的时候,open() 方法的行为是为指定的。

    除了保存供 send() 方法使用的请求参数,以及重置 XMLHttpRequest 对象以便复用,open() 方法没有其他的行为。要特别注意,当这个方法调用的时候,实现通常不会打开一个到 Web 服务器的网络连接。

    XMLHttpRequest.send()

    发送一个 HTTP 请求

    语法

    send(body)如果通过调用 open() 指定的 HTTP 方法是 POST 或 GET,body 参数指定了请求体,作为一个字符串或者 Document 对象。如果请求体不是必须的话,这个参数就为 null。对于任何其他方法,这个参数是不可用的,应该为 null(有些实现不允许省略该参数)。

    说明

    这个方法导致一个 HTTP 请求发送。如果之前没有调用 open(),或者更具体地说,如果 readyState 不是 1,send() 抛出一个异常。否则,它发送一个 HTTP 请求,该请求由以下几部分组成:

    之前调用 open() 时指定的 HTTP 方法、URL 以及认证资格(如果有的话)。 之前调用 setRequestHeader() 时指定的请求头部(如果有的话)。 传递给这个方法的 body 参数。 一旦请求发布了,先触发 onreadystatechange 事件句柄,随后send() 把 readyState 设置为 2,并触发 onreadystatechange 事件句柄。

    如果之前调用的 open() 参数 async 为 false,这个方法会阻塞并不会返回,直到 readyState 为 4 并且服务器的响应被完全接收。否则,如果 async 参数为 true,或者这个参数省略了,send() 立即返回,并且正如后面所介绍的,服务器响应将在一个后台线程中处理。

    如果服务器响应带有一个 HTTP 重定向,send() 方法或后台线程自动遵从重定向。当所有的 HTTP 响应头部已经接收,send() 或后台线程把 readyState 设置为 3 并触发 onreadystatechange 事件句柄。如果响应较长,send() 或后台线程可能在状态 3 中触发 onreadystatechange 事件句柄:这可以作为一个下载进度指示器。最后,当响应完成,send() 或后台线程把 readyState 设置为 4,并最后一次触发事件句柄。

    第二部分

    用XMLHttpRequest对象和JavaScript做网页局部刷新

    我们以无动态刷新省市级联为例来做页面的局部刷新。假定,在某一个活动报名的页面(默认.net平台)上需要录入用户的信息,比如省市、姓名、性别、电话号码、邮箱等信息。在这个报名表单中,我们把选择省市处做成下拉菜单。如果这个页面用自动回发,用户在每选择一次省份的时候页面就会刷新一次,肯定会降低用户体验,我们把它做成无刷新的方式,XMLHTTPRequest对象会默默无闻的向服务器请求数据,不打扰用户,用户在页面停留的平均时间也会延长,体验会更好。

    下面我们就用第一部分介绍的XMLHTTPRequest对象实现局部刷新。

    首先,我们实例化一个XMLHTTPRequest对象:

    // JavaScript Document

    function GetXMLHttpRequest()

            {

                var xmlhttp=null;

                try

                {

                    xmlhttp =new ActiveXObject("Msxml2.XMLHTTP");

                }

                catch(e)

                {

                    try

                    {

                        xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");

                    }

                    catch(oc)

                    {

                        xmlhttp =null;

                    }

                }

                if(!xmlhttp && typeof XMLHttpRequest != "undefined")

                {

                    xmlhttp =new XMLHttpRequest();

                }

                return xmlhttp;

            }

    然后,封装一个获取服务器数据的JS函数:

    function GetServerData(obj) {

                var FValue = obj.value;//传过来的值,可以作为一个参数传入数据接口。

                var weburl = "http://www.example.com/index.ashx?provinceid=" + FValue;//请求的url地址,这个地址仅为示例,实际不存在

                var xmlhttp = GetXMLHttpRequest();//实例化XMLHTTPRequest            xmlhttp.open("get",weburl,true);//调用open()方法      xmlhttp.onreadystatechange=function()//readyState 属性改变的时候调用的事件句柄函数

                {

                    if(xmlhttp.readyState==4)//服务器已经成功返回数据

                    {

    var result=xmlhttp.responseText; //得到服务器返回的数据,然后怎么处理这些数据,看你的了

                    }

                }

                xmlhttp.send(null);

            }

    到这里,网页的局部刷新的最关键的部分就完成了,剩下的就是根据具体的需要操作服务器返回的数据了。

    如果看到这里还是有点不懂,看一下下面的这个小例子,以下是源码

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NoRefresh.aspx.cs" Inherits="WebApplication1.NoRefresh" %>

     

    <!DOCTYPE html>

     

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

        <title>页面局部刷新</title>

        <script type="text/javascript">

            function GetXMLHttpRequest() {

                var xmlhttp = null;

                try {

                    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

                }

                catch (e) {

                    try {

                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

                    }

                    catch (oc) {

                        xmlhttp = null;

                    }

                }

                if (!xmlhttp && typeof XMLHttpRequest != "undefined") {

                    xmlhttp = new XMLHttpRequest();

                }

                return xmlhttp;

            }

            function GetServerData(obj) {

                var FValue = obj.value;

                var weburl =  "http://www.example.com/index.ashx?provinceid=" + FValue; //请求的url地址,这个地址仅为示例,实际不存在

                var xmlhttp = GetXMLHttpRequest();

                xmlhttp.open("get", weburl, true);

                xmlhttp.onreadystatechange = function () {

                    if (xmlhttp.readyState == 4) {

                        //得到服务器返回的数据

                        var result = xmlhttp.responseText;

                        document.getElementById("<%=ddl_city.ClientID %>").length = 0;

                        document.getElementById("<%=ddl_city.ClientID %>").options.add(new Option("请选择城市", "0"));

                        if (result != "") {

                            var cityArry = eval("(" + result + ")");//string --> object这里我们模拟获取的数据是JSON数组。切记,从服务器上获取的JSON数组一定要转换为object数据类型,否则无法获取值。

                            for (var i = 0; i < cityArry.City.length; i++) {

                                var cityid = cityArry.City[i].CityID;

                                var cityname = cityArry.City[i].CityName;                            document.getElementById("<%=this.ddl_city.ClientID %>").options.add(new Option(cityname, cityid));

                            }

                        }

                    }

                }

                xmlhttp.send(null);

            }

        </script>

    </head>

    <body style="background:url('images/bodybg.png') repeat top;">

        <form id="form1" runat="server">

        <div style="width:200px; height:100px; margin-top:50px; margin-left:100px;">

            省份:<asp:DropDownList ID="ddl_province" runat="server" οnchange="GetServerData(this)">

                <asp:ListItem Value="0">请选择省份</asp:ListItem>

                <asp:ListItem Value="1">北京</asp:ListItem>

                <asp:ListItem Value="16">河南</asp:ListItem>

               </asp:DropDownList><br />

            城市:<asp:DropDownList ID="ddl_city" runat="server">

                <asp:ListItem Value="0">请选择市区</asp:ListItem>

               </asp:DropDownList>

        </div>

        </form>

    </body>

    </html>

     另:页面用到的JSON数组

    {"City":[{"CityID":"152","CityName":"郑州市"},{"CityID":"153","CityName":"开封市"},{"CityID":"154","CityName":"洛阳市"},{"CityID":"155","CityName":"平顶山市"},{"CityID":"156","CityName":"安阳市"},{"CityID":"157","CityName":"鹤壁市"},{"CityID":"158","CityName":"新乡市"},{"CityID":"159","CityName":"焦作市"},{"CityID":"160","CityName":"濮阳市"},{"CityID":"161","CityName":"许昌市"},{"CityID":"162","CityName":"漯河市"},{"CityID":"163","CityName":"三门峡市"},{"CityID":"164","CityName":"南阳市"},{"CityID":"165","CityName":"商丘市"},{"CityID":"166","CityName":"信阳市"},{"CityID":"167","CityName":"周口市"},{"CityID":"168","CityName":"驻马店市"}]}

    转载于:https://www.cnblogs.com/huyueping/p/3586818.html

    展开全文
  • 【JSP】文件上传局部刷新

    千次阅读 2015-05-10 17:43:01
    看到局部刷新,大家联想到的肯定是Ajax,但实际上,Ajax是没有办法...那么我们又是怎样实现文件上传局部刷新的呢?其实我们再上传文件的时候采用的还是同步方式,为了不刷新整个页面,我们需要用到隐藏的iframe,我们

    看到局部刷新,大家联想到的肯定是Ajax,但实际上,Ajax是没有办法实现文件上传的局部刷新的。由于安全性的需要,JavaScript代码是不能访问客户端文件系统,所以通过XMLHttpRequest的请求参数是无法得到上传文件的内容的,只能得到文件名。

    那么我们又是怎样实现文件上传局部刷新的呢?其实我们再上传文件的时候采用的还是同步方式,为了不刷新整个页面,我们需要用到隐藏的iframe,我们在页面上增加一个隐藏的<iframe>元素,该元素将会作为提交表单的target。

    文件上传要求表单的提交方式是POST,另外需要设置表单的MIME编码enctype="multipart/form-data"。页面代码如下:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    	<title>upload</title>
    </head>
    <body>
    	<form action="UploadServlet" method="post" enctype="multipart/form-data" target="hideframe">
    		<input type="file" name="file"/>
    		<input type="submit" value="上传"/>
    	</form>
    	<iframe name="hideframe" style="display:none"></iframe>
    </body>
    </html>
    

    表单的target属性对应与<iframe>的name属性,这样就能够只更新<iframe>元素,从而实现无刷新的文件上传。

    上传文件用到一个开源项目:commons-fileupload,将其添加到应用的WEB-INF/lib路径下即可。上传的Servlet代码如下:

    public class UploadServlet extends HttpServlet {
    	/**
    	 * 上传文件
    	 */
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		doPost(request,response);
    	}
    	
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		// 工厂
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		// 解析器
    		ServletFileUpload sfu = new ServletFileUpload(factory);
    		// 解析,得到List
    		try {
    			List<FileItem> list = sfu.parseRequest(request);
    			FileItem fi = list.get(0);
    			//得到文件保存的路径
    			String fileName = fi.getName();//获取上传的文件名称
    			String root = this.getServletContext().getRealPath("files/upload/");
    			//创建文件
    			File destFile = new File(root, fileName);
    			//写数据
    			fi.write(destFile);
    			out.write("<script type='text/javascript'> alert('文件上传成功') </script>");
    		} catch (FileUploadException e) {
    			e.printStackTrace();
    			out.write("<script type='text/javascript'> alert('文件上传不成功,请重试') </script>");
    		}
    	}
    }
    

    例子写得比较简单,在实际上传处理中,FileItem还有以下常用方法

      boolean isFormField():是否为普通表单项!返回true为普通表单项,如果为false即文件表单项;

      String getFieldName():返回当前表单项的名称;

      String getString(String charset):返回表单项的值;

      long getSize():返回上传文件的字节数;

      InputStream getInputStream():返回上传文件对应的输入流

    要注意一点,request.getParametere("xxx")这个方法在表单为enctype="multipart/form-data"时作废,它只会返回null。所以要得到普通表单项的值,要使用上面说到的getString(String charset)方法。


    Author:立礼
    Sign:人生不要有太多的幻想,而要有更多的行动。

    展开全文
  • # 查看网页源代码,如果源码中没有你要的数据,尝试访问下一页,当你点击下一页的时候,整个页面没有刷新, 只是局部刷新了,很大的可能是ajax加载 # 遇到ajax加载,一般的解决步骤就,通过浏览器或者软件抓包分析...
    # ajax动态加载网页
    # 怎样判断一个网页是不是动态加载的呢?
    # 查看网页源代码,如果源码中没有你要的数据,尝试访问下一页,当你点击下一页的时候,整个页面没有刷新, 只是局部刷新了,很大的可能是ajax加载
    # 遇到ajax加载,一般的解决步骤就,通过浏览器或者软件抓包分析响应的请求,查看response里面哪个有你需要的数据,
    # 然后再分析headers请求的网址,直接向哪个网址请求即可,当然还会有一些接口需要构建post请求
    import json
    import jsonpath
    import requests
    headers = {
        'User-Agent':"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10",
    }
    url = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=python&kt=3&_v=0.11045029&x-zp-page-request-id=7d6ccc963ff14b1d995b6f21942f2295-1542632726829-135321'
    r = requests.get(url=url.format(3*60),headers=headers)
    demo = r.text
    # string = json.dumps(demo, ensure_ascii=False)
    obj = json.loads(demo)
    ret = jsonpath.jsonpath(obj, '$..company.name')
    print(ret)# ajax动态加载网页
    # 怎样判断一个网页是不是动态加载的呢?
    # 查看网页源代码,如果源码中没有你要的数据,尝试访问下一页,当你点击下一页的时候,整个页面没有刷新,
    # 只是局部刷新了,很大的可能是ajax加载
    # 遇到ajax加载,一般的解决步骤就,通过浏览器或者软件抓包分析响应的请求,查看response里面哪个是需要的数据,
    # 然后再分析headers请求的网址,直接向哪个网址请求即可,当然还会有一些接口需要构建post请求
    #导入的包如果下面出现红色波浪线,pip install 名字 即可
    import json
    import jsonpath
    import requests
    headers = {
        'User-Agent':"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10",
    }
    url = 'https://fe-api.zhaopin.com/c/i/sou?start={}&pageSize=60&cityId=489&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=python&kt=3&_v=0.11045029&x-zp-page-request-id=7d6ccc963ff14b1d995b6f21942f2295-1542632726829-135321'
    r = requests.get(url=url.format(3*60),headers=headers)
    demo = r.text
    # string = json.dumps(demo, ensure_ascii=False)
    obj = json.loads(demo)
    ret = jsonpath.jsonpath(obj, '$..company.name')
    print(ret)
    

      -----网页抓包----

    通过观察,改变start后面数字,会出现不同的数据,第一页是0,第二页是60,依次递增,pagesize则是每一页出现多少条,最好不要改变

    将网页中的内容粘贴到在线json解析中,可以看到,这是一个标准的json数据,通过在线解析可以看到清晰的结构

    获取到的数据是一个json格式的字符串,需要使用jsonpath进行解析,获取里面的内容,图中选取了当前请求的公司名

    转载于:https://www.cnblogs.com/ilovezzh/p/9986045.html

    展开全文
  • 怎样实现Ajax刷新

    2018-05-27 19:22:02
    要实现Ajax局部刷新,可以采用jQuery前端框架向服务器提交异步请求,服务器处理后,把结果返回给客户端,客户端在显示给用户,这样就达到了局部刷新的效果。
  • 局部刷新,哪位前辈有先例,给指点一下哈,不胜感激。或者有更好的办法给推荐一下哈(不想用框架)。 系统架构:View(tiles+JSP) + springMVC + spring + ibatis + oracle 菜单树:MzTreeView.js <!--==...
  • 为什么使用ajax局部刷新返回到jsp中的在jsp中使用event.target获取不到,应该怎样获取
  • 当然了选用继承自TabActivity的话就相对容易一些,下面来看看分别是怎样来实现的吧。 我只写继承TabActivity,文章末尾会给一个比较牛逼的链接,本人也是照着他的做的 首先准备几个跳转的页面,布局文件里面的东西...

    TabHost的实现分为两种,一个是不继承TabActivity,一个是继承自TabActivity;当然了选用继承自TabActivity的话就相对容易一些,下面来看看分别是怎样来实现的吧。

    我只写继承TabActivity,文章末尾会给一个比较牛逼的链接,本人也是照着他的做的

    首先准备几个跳转的页面,布局文件里面的东西大家自己添加,没必要按照我的布局来,

    main2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/tv_dzmc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dip"
            android:text="电站名称"
            android:textSize="28sp" />
    
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="20dip"
            android:layout_marginRight="20dip"
            android:layout_marginTop="20dip"
            android:stretchColumns="*" >
    
            <TableRow
                android:id="@+id/tableRow_zjrl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
    
                <TextView
                    android:id="@+id/tv_mc1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="装机容量"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_zjrl"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="kW"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_gl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="功率"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_gl"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="kW"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_dwfdl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="名称"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dwfdl"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="kwh/kw"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_jrfdl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="今日发电量"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_jrfdl"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="kWh"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_jrsy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="今日收益"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_jrsy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="元"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_ljfdl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="累计发电量"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_ljfdl"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="MWh"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
            <TableRow
                android:id="@+id/tableRow_ljsy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip" >
    
                <TextView
                    android:id="@+id/tv_mc7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="累计收益"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_ljsy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="0"
                    android:textSize="20sp" />
    
                <TextView
                    android:id="@+id/tv_dw7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right"
                    android:text="万元"
                    android:textSize="20sp" />
            </TableRow>
    
            <View
                android:layout_width="fill_parent"
                android:layout_height="1px"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#dddddd" />
    
    
        </TableLayout>
    
    </LinearLayout>
    View Code

    dianzhangaikuang.java

    package com.example.myfragment;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class dianzhangaikuang extends Activity {
    //    private TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main2);
    //        tv=(TextView) findViewById(R.id.text);
    //        Button button=(Button) findViewById(R.id.button);
    //        button.setText("改变");
    //        button.setOnClickListener(new OnClickListener() {
    //            
    //            @Override
    //            public void onClick(View arg0) {
    //                // TODO Auto-generated method stub
    //                tv.setText("TextView改变了");
    //            }
    //        });
            
            
            
        }
        
        
    }
    View Code

    tianqi.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/tv_dzmc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dip"
            android:text="电站名称"
            android:textSize="28sp" />
    
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dip"
            android:layout_marginRight="20dip"
            android:layout_marginTop="20dip"
            android:stretchColumns="*" >
    
            <TableRow
                android:id="@+id/tableRow_tq"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
    
                <TextView
                    android:id="@+id/tv_cs"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:text="城市" />
    
                <ImageView
                    android:id="@+id/tv_tq"
                    android:layout_width="50dip"
                    android:layout_height="50dip"
                    android:layout_column="2"
                    android:layout_gravity="right"
                    android:src="@drawable/yuan" />
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow_wd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip" >
    
                <TextView
                    android:id="@+id/tv_cs1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:text="温度" />
    
                <ImageView
                    android:id="@+id/textView4"
                    android:layout_width="50dip"
                    android:layout_height="50dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yuan" />
    
                <TextView
                    android:id="@+id/tv_wd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:text="0" />
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow_fs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip" >
    
                <TextView
                    android:id="@+id/tv_cs2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:text="风速" />
    
                <ImageView
                    android:id="@+id/textView4"
                    android:layout_width="50dip"
                    android:layout_height="50dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yuan" />
    
                <TextView
                    android:id="@+id/tv_fs"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:text="0" />
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow_sd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip" >
    
                <TextView
                    android:id="@+id/tv_cs3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:text="湿度" />
    
                <ImageView
                    android:id="@+id/textView4"
                    android:layout_width="50dip"
                    android:layout_height="50dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yuan" />
    
                <TextView
                    android:id="@+id/tv_sd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical"
                    android:text="0" />
            </TableRow>
        </TableLayout>
    
    </LinearLayout>
    View Code

    tianqi.java

    package com.example.myfragment;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class tianqi extends Activity{
    
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tianqi);
        }
    }
    View Code

    fadianliang.java以及shebeixinxi.java大家就自己去完成吧!

    在AndroidManifest里注册要用的activity,不注册会闪退的

    <activity android:name="com.example.myfragment.tianqi"
                android:label="天气"></activity>

    准备工作完成后,下面开始写主页面

    activity_main.xml

    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
        android:id="@android:id/tabhost"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent" >  
      
        <LinearLayout  
            android:layout_width="fill_parent"  
            android:layout_height="fill_parent"      
            android:background="@drawable/jbshape"  
            android:orientation="vertical" >  
      
            <FrameLayout  
                android:id="@android:id/tabcontent"  
                android:layout_width="fill_parent"  
                android:layout_height="0.0dip"
                android:layout_marginTop="0dip"
                android:layout_weight="1.0" />  
      
            <TabWidget  
                android:id="@android:id/tabs"  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content"  
                android:layout_weight="0.0"  
                android:visibility="gone" />  
      
            <FrameLayout  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content" >  
      
                <RadioGroup  
                    android:id="@+id/main_tab_group"  
                    android:layout_width="fill_parent"  
                    android:layout_height="wrap_content"  
                    android:layout_gravity="bottom"  
                    android:background="@drawable/bottom1"  
                    android:gravity="bottom"  
                    android:orientation="horizontal"  
                     >  
      
                    <RadioButton  
                        android:id="@+id/main_tab_gaikuang"  
                        style="@style/MMTabButton"  
                        android:layout_weight="1.0" 
                        android:checked="true"     
                        android:drawableTop="@drawable/bg_checkbox_icon_menu_0"  
                        android:text="概况" />  
      
                    <RadioButton  
                        android:id="@+id/main_tab_tianqi"  
                        style="@style/MMTabButton"  
                        android:layout_weight="1.0"    
                        android:drawableTop="@drawable/bg_checkbox_icon_menu_1"  
                        android:text="天气" />  
      
                    <RadioButton  
                        android:id="@+id/main_tab_fadianliang"  
                        style="@style/MMTabButton"  
                        android:layout_weight="1.0"  
                        android:drawableTop="@drawable/bg_checkbox_icon_menu_2"  
                        android:text="发电量" />  
      
                    <RadioButton  
                        android:id="@+id/main_tab_nibianqi"  
                        style="@style/MMTabButton"  
                        android:layout_weight="1.0"     
                        android:drawableTop="@drawable/bg_checkbox_icon_menu_3"  
                        android:text="逆变器" />  
                </RadioGroup>  
      
                <TextView  
                    android:id="@+id/main_tab_new_message"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:layout_gravity="center_horizontal|top"  
                    android:layout_marginLeft="60dip"  
                    android:layout_marginTop="1dip"  
                    android:background="@drawable/tips"  
                    android:gravity="center"  
                    android:text="1"  
                    android:textColor="#ffffff"  
                    android:textSize="10sp"  
                    android:visibility="gone" />  
            </FrameLayout>  
        </LinearLayout>  
      
    </TabHost>
    View Code

    zhuyemian.java

    package com.example.myfragment;
    
    import android.app.ActionBar;
    import android.app.TabActivity;
    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.RadioGroup;
    import android.widget.TabHost;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    
    public class zhuyemian extends TabActivity {//implements OnCheckedChangeListener
        private RadioGroup group;
        private TabHost tabHost;  
        private TextView main_tab_new_message;  
        
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //        group=(RadioGroup) findViewById(R.id.radioGroup);
    //        group.setOnCheckedChangeListener(this);
            
            /* 显示App icon左侧的back键 */
            final ActionBar actionBar = getActionBar();
            actionBar.setDisplayHomeAsUpEnabled(true);
            
            main_tab_new_message=(TextView) findViewById(R.id.main_tab_new_message);  
            main_tab_new_message.setVisibility(View.VISIBLE);  
            main_tab_new_message.setText("10");  
            
            tabHost=this.getTabHost();  
            TabHost.TabSpec spec;  
            Intent intent;  
      
            intent=new Intent().setClass(this, dianzhangaikuang.class);  
            spec=tabHost.newTabSpec("概况").setIndicator("概况").setContent(intent);  
            tabHost.addTab(spec);  
              
            intent=new Intent().setClass(this,tianqi.class);  
            spec=tabHost.newTabSpec("天气").setIndicator("天气").setContent(intent);  
            tabHost.addTab(spec);  
              
            intent=new Intent().setClass(this, fadianliang.class);  
            spec=tabHost.newTabSpec("发电量").setIndicator("发电量").setContent(intent);  
            tabHost.addTab(spec);  
              
           
            intent=new Intent().setClass(this, shebeixinxi.class);  
            spec=tabHost.newTabSpec("逆变器").setIndicator("逆变器").setContent(intent);  
            tabHost.addTab(spec);  
            tabHost.setCurrentTab(0); 
            
            RadioGroup radioGroup=(RadioGroup) this.findViewById(R.id.main_tab_group);  
            radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {  
                  
                @Override  
                public void onCheckedChanged(RadioGroup group, int checkedId) {  
                    // TODO Auto-generated method stub  
                    switch (checkedId) {  
                    case R.id.main_tab_gaikuang://添加考试  
                        tabHost.setCurrentTabByTag("概况");
                        actionBar.setTitle("概况");//设置标题栏
                        break;  
                    case R.id.main_tab_tianqi://我的考试  
                        tabHost.setCurrentTabByTag("天气");
                        actionBar.setTitle("天气");
                        break;  
                    case R.id.main_tab_fadianliang://我的通知  
                        tabHost.setCurrentTabByTag("发电量");
                        actionBar.setTitle("发电量");
                        break;  
                    case R.id.main_tab_nibianqi://设置  
                        tabHost.setCurrentTabByTag("逆变器");
                        actionBar.setTitle("逆变器");
                        break;  
                    default:  
                        //tabHost.setCurrentTabByTag("我的考试");  
                        break;  
                    }  
                }  
            }); 
                                           
        }
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:  
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }
    
    
    
    }
    View Code

    演示效果如下:

     

    这个也许大家会觉得麻烦,那么多页面,好麻烦!那下面就把所有页面放在一个.xml文件中

    fadianliang.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent" >  
      
        <!-- 第一个布局 -->  
        <LinearLayout     
            android:id="@+id/view1"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent" >        
            <TextView  
                android:id="@+id/textView1"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:text="张小媛" />  
        </LinearLayout>  
      
        <!-- 第二个布局 -->  
        <LinearLayout     
            android:id="@+id/view2"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent" >  
              
            <TextView  
                android:id="@+id/textView2"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:text="马贝贝" />  
        </LinearLayout>  
      
        <!-- 第三个布局 -->  
        <LinearLayout     
            android:id="@+id/view3"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent" >  
              
            <TextView  
                android:id="@+id/textView3"  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:text="呼伦贝尔" />  
        </LinearLayout>  
      
    </FrameLayout>  
    View Code

    fadianliang.java

    package com.example.myfragment;
    
    import android.app.Activity;
    import android.app.TabActivity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.widget.TabHost;
    import android.widget.TabHost.OnTabChangeListener;
    import android.widget.TabWidget;
    import android.widget.TextView;
    
    public class fadianliang extends TabActivity {  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);   
            TabHost tabHost = getTabHost();  
            LayoutInflater.from(this).inflate(R.layout.fadianliang,  
                    tabHost.getTabContentView(), true);  
            tabHost.addTab(tabHost.newTabSpec("功率").setIndicator("功率", getResources().getDrawable(R.drawable.ic_launcher))  
                    .setContent(R.id.view1));  
            tabHost.addTab(tabHost.newTabSpec("月发电量").setIndicator("月发电量")  
                    .setContent(R.id.view2));  
            tabHost.addTab(tabHost.newTabSpec("年发电量").setIndicator("年发电量")  
                    .setContent(R.id.view3));
            TabWidget tabWidget=tabHost.getTabWidget();
            for (int i = 0; i < tabWidget.getChildCount(); i++) {//tabWidget.getChildCount()得到tab总数
                TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
                tv.setTextSize(18);     
            }//设置tab上的字体大小
             
              
             //标签切换事件处理,setOnTabChangedListener  
            tabHost.setOnTabChangedListener(new OnTabChangeListener(){    
                @Override  
                public void onTabChanged(String tabId) {  
                    if (tabId.equals("功率")) {   //第一个标签  
                    }  
                    if (tabId.equals("月发电量")) {   //第二个标签  
                    }  
                    if (tabId.equals("年发电量")) {   //第三个标签  
                    }  
                }              
            });   
              
            
            TabWidget tw=tabHost.getTabWidget();
            tw.setBackgroundColor(getResources().getColor(R.color.txt_blue));
              
        } 
        
        public void onTabChanged(String tabId) {
            Activity activity = getLocalActivityManager().getActivity(tabId);
            if (activity != null) {
                activity.onWindowFocusChanged(true);
            }
        }
      
    }  
    View Code
    演示效果如下:

    好了这就是我实现的tabhost了,还有一种不继承的方法大家可以参看下面的链接:

    http://blog.csdn.net/harvic880925/article/details/17120325#t11

     

    从父类传值过来

    intent.putExtra("id", “1111”);
    intent.setClass(dianzhanliebiao.this, zhuyemian.class);
    dianzhanliebiao.this.startActivity(intent);

    共享传递到父类的值,(tabhost的子页面)

    // 获取id
    Intent intent = getParent().getIntent();
    String id = intent.getStringExtra("id");

     

     

    安卓里面ViewPager也可以实现上面的功能,而且可以滑动,可参考链接:http://blog.csdn.net/harvic880925/article/details/38453725

    转载于:https://www.cnblogs.com/rainday1/p/5484608.html

    展开全文
  • 用户注册与异步刷新

    2017-08-27 22:51:27
    获取后台服务器传来的信息,只需要在局部刷新,而不需要整体页面刷新. 异步刷新在用户注册上是很常见的,也是十分实用的.有没有遇到这样的情况,辛辛苦苦注册一个账户,最后点击完提交后,页面刷新反馈该账号已被注册,请...
  • 怎样优化J2ME程序当中的paint()函数关键字:优化 paint J2ME, 局部刷新,局部重画,图片 我们经常会遇到这样的问题,在模拟器上跑得很好的程序在实际的手机上却很慢,甚至运行不了,这大多数是因为重画机制的使用...
  • ajax 的过程是怎样

    2018-04-03 10:57:43
    1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息3. 设置响应HTTP请求状态变化... 获取异步调用返回的数据6. 使用JavaScript和DOM实现局部刷新...
  • 优化 J2ME 中的 paint() 函数 林刚 { lirincy@163.com, 引用须注明出处作者 } 关键字:优化 paint J2ME, 局部刷新,局部重画,图片 我们经常会遇到这样的问题,在模拟器上跑得很好的程序在实际的手机上却很慢,甚至...
  • 首先js、ajax技术是必须的,在开发后台过程中很多前后台数据交互必须用到ajax技术,特别是一些数据量比较大的页面,你不可能每个操作都去刷新整个页面,尽量要局部刷新数据,然后通过ajax的回调函数返回到前台的数据...
  • 怎样协调好MFC中ondraw与ontimer的关系

    千次阅读 2014-03-17 14:00:14
    Ontimer函数 绘制临时显示的图, 重绘后会消失,(即,OnTimer主要是定时刷新或者临时性的绘制) 原则:ontimer是定时器,只控制参数变化并通知OnDraw进行局部更新,自己不重画。这样就没有冲突了。优化来说...
  • 最近在做erp电子沙盘项目,想要查看一局部变量的值,但又不想装firebug.ie8自带有一个功能:开发人员工具,可以很方便地进行javascript调试. 1:打开调试的页面 2:从工具里面,打开开发人员工具,转到...
  • 先看结果,就是出现一个像百度一下自动提示的功能。但是选择某个后就对应搜索某个内容没实现,主要是实现前端和服务器交互。...2.js与后台如何交互,怎样实现局部刷新? <script type="text/javascr...
  • Ajax利弊

    2013-08-02 09:15:52
    :不是,ajax是可以理解为局部刷新,对应某一个事件发送一个http请求。假如你进行快速操作,此时需要刷新的数据差不多等于原先页面那样大的时候,你就要加载比原先多的js代码,发送多的http请求,换成原来就只需一次...
  • ajax具体实现学习记录

    2019-08-06 15:20:00
    首先要明白ajax是为了解决什么问题,简单来讲就是为了局部刷新页面,而不刷新整个界面。就比如现在有一个实时热度的显示,它是不断变化的,所以你肯定要不停的从数据库当中获取热度,进行显示,但是又只是更新热度,...
  • ajax的学习

    2019-08-05 14:25:45
    首先要明白ajax是为了解决什么问题,简单来讲就是为了局部刷新页面,而不刷新整个界面。就比如现在有一个实时热度的显示,它是不断变化的,所以你肯定要不停的从数据库当中获取热度,进行显示,但是又只是更新热度,...
  • 1 ajax 的过程是怎样的 创建XMLHttpRequest对象,也就是创建一个异步调用对象 ...使用JavaScript和DOM实现局部刷新 2 请解释一下 JavaScript 的同源策略。同源策略是客户端脚本(尤其是Javascript)的重要的安
  • JS怎样获取服务器端的...第一种:在后台将list转换为json数据然后ajax局部刷新将数据取出来。具体代码我会在后面加上。 第二种:在页面里进行数据的转换,将list转换为数组。 第三种:自己内建js的Map或者List对象。
  • HTML中src的获取

    2016-11-07 21:35:41
    刷新局部表格内容,如果src的值没有发生变化,则页面数据不会继续向后台进行访问,直接获取缓存。 怎样避免,可以在src值的末尾用随机数进行变化,这样每次进行刷新表格,表格中关于src的的数据都会再次访问后台
  • 前几天跟一个朋友在聊Web的AJAX时,很惊讶他的设计方法很原始,直接用的js直接调的.aspx,传参来取得结果实现局部刷新,个人感觉这样不好维护,也没有灵活性. 怎样能够做到灵活?可维护性强? 做一个小实例出来,也加强...
  • 第一个项目阶段总结清单

    千次阅读 2012-12-25 13:09:30
    1.基础数据去重处理 2.基础数据删除操作限制(表现为页面上不可选) 3.关联信息关联删除 ...9.批量删除之局部刷新,当含有不可选的复选框时又该如何处理? 事实上只是id字符串构造上会不相同,做法如下: v
  • JQuery调用Web service实现AJAX原来如此?

    千次阅读 2012-06-17 12:02:37
    摘要:前几天跟一个朋友在聊Web的AJAX,以及利用web service在跨平台,跨域进行系统整合,很惊讶他的设计方法很原始,直接用的js直接调的xx.aspx,传参来取得结果实现局部刷新,个人感觉这样不好维护,也没有灵活性. ...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

怎样局部刷新