探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制

Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

AJAX简介

AJAX(Asynchronous JavaScript And XML)不是一种新的编程语言,它指的是异步JavaScript。利用AJAX可在不重新加载整个页面的情况下与服务器通信并更新部分网页。

XMLHttpRequest

AJAX 的核心是XMLHttpRequest,它是一种支持异步请求的技术。也就是说:在JavaScript中利用XMLHttpRequest可向服务器提出请求并处理响应且不阻塞用户当前操作。

XMLHttpRequest的创建

目前,市面上的大部分浏览器都支持XMLHttpRequest ,但是有的较老的浏览器比如:IE5和IE6却不支持。
所以,可以这么做:

var xmlhttp;
if (window.XMLHttpRequest)
  {//code for IE7+,Firefox,Chrome,Opera,Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {//code for IE6,IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

XMLHttpRequest的常用方法

open(method,url,async)
建立与服务器的连接

method:指定请求方式,比如GET、POST;常用GET方式
url:请求的地址
async:是否使用异步方式请求,默认为true

send(string)
将请求发送到服务器

如果是GET请求那么参数string为null,如果是POST请求那么利用string携带请求参数

setRequestHeader(header,value)
设置请求消息头;很少用到

XMLHttpRequest的常用属性

readyState

readyState用于标识XMLHttpRequest的状态信息

readyState=0表示XMLHttpRequest对象未完成初始化,即刚创建。

readyState=1表示XMLHttpRequest对象开始发送请求;即调用了open方法,但还没有调用send方法,请求还没有发出

readyState=2表示XMLHttpRequest对象的请求发送完成;即send方法已经调用,数据已经提交到服务器,但没有收到任何响应

readyState=3表示XMLHttpRequest对象开始读取响应,还没有结束;即收到了响应消息头,但响应正文还没有收到

readyState=4表示XMLHttpRequest对象读取响应结束,响应消息头和响应正文都已收到

responseText

获得响应的文本内容

responseXML

获得响应的XML文档对象

status

status用于标识Http请求的响应状态码

200 服务器响应正常
400 无法找到请求的资源
403 没有访问权限
404 访问的资源不存在
500 服务器内部错误

XMLHttpRequest的回调函数

每当readyState属性值改变时onreadystatechange函数就会被执行。所以我们可以在该函数中执行一些监听,比如:readyState=4而且status=200时处理服务器返回的数据

XMLHttpRequest使用示例

首先,我们写一个简单的jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextpath}/js/xmlhttprequest.js"></script>
<title>测试AJAX</title>
</head>
<script type="text/javascript"> window.onload = function() { //第一步:获取XMLHttpRequest var req = getXMLHttpRequest(); //第四步:处理结果 req.onreadystatechange = function(){ if(req.readyState==4){ if(req.status==200){ alert(req.responseText); } } } //第二步:建立连接 req.open("get","${pageContext.request.contextpath }/servlet"); //第三步:发送请求 req.send(null); } </script>
<body>
</body>
</html>

其中xmlhttprequest.js如下:

function getXMLHttpRequest(){
    var xmlhttp;
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xmlhttp;
}

然后,我们再写一个非常简单的Servlet

/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */
package cn.com;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.servletexception;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestAJAXServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req,HttpServletResponse resp)
            throws servletexception,IOException {
        PrintWriter writer = resp.getWriter();
        writer.print("Hello AJAX");
    }

    @Override
    protected void doPost(HttpServletRequest req,IOException {
    }

}

运行后效果如下图所示:

谷哥的小弟学后台(22)——AJAX的更多相关文章

  1. ios – 为什么Apple建议在串行后台队列中调度OpenGL命令,这不可避免地会导致崩溃?

    他们suggest:WhenusingGCD,useadedicatedserialqueuetodispatchcommandstoOpenGLES;thiscanbeusedtoreplacetheconventionalmutexpattern.我不明白这个建议.我无法解决这种冲突:当应用程序的app委托收到-applicationWillResignActive调用时,它必须立即停止调用任

  2. ios – 在Swift中删除WKWebView Accesory栏

    我现在正试着将this转换成Swift而没有真正的背景.这是我到目前为止所得到的…而且我一直在寻找谷歌并不知道要搜索什么才能更具体.你能否详细说明我做错了什么?

  3. iOS谷歌地图sdk GMSMarker定位

    我正在使用Google地图,我可以通过使用将地图集中到GMSMarker我显示一个大小为200*150的自定义标注,当相机位置改变时,它的一部分被隐藏,但是我想要将标注放在中央,并且地图指向下方.任何想法如何做到这一点.解决方法看看使用GMSProjection.要将地图的中心从标记位置移动100px,您可以执行以下操作:

  4. iOS和Google Firebase – 如何执行通知操作

    解决方法在我写这个问题时想出来,谷歌搜索没有帮助我,所以希望这会帮助别人.我在本文档中找到了答案:FCMHTTPProtocol在“通知有效负载支持”部分中,参数click_action表示“表示与用户单击通知关联的操作.对应于APNs有效负载中的类别”.所以click_action==aps.category

  5. ios – 如何检查应用程序何时从后台返回到前台,而不是来自推送通知?

    如何从图标中查看应用程序的打开时间?本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

  7. 可可 – 在Swift中获取应用程序名称

    如何在Swift中获取应用程序名称?谷歌给了我这个:我把它转换成了Swift;错误–方法不存在:这应该工作:infoDictionary被声明为一个varinfoDictionary:[NSObject:AnyObject]!所以你必须打开它,作为一个Swift字典访问它,结果是一个AnyObject,转换它。更新Swift3在可能的情况下总是更好地使用常量:

  8. swift – 使用Firebase登录时“访问钥匙串时出错”

    PS.对不起,如果我错过任何东西,这是我第一次发布.尝试打开项目目标的功能钥匙串共享.这对我有用KeychainSharing

  9. android – 是否有任何Google Now API可以将我们自己的应用程序集成到现在?

    如何向Google即时提供我的应用数据的信息或卡片?解决方法Google即时API仅适用于向Google注册其应用的用户,它是私有的.谷歌控制哪些卡将在他们的谷歌即时应用程序上显示.因此,您需要与Google联系并注册您的应用以获取NowAPI,然后您可以构建自己的Now卡.

  10. android – 我可以从谷歌播放中删除alpha测试中发布的应用程序吗?

    我已将我的应用程序发布到alpha测试中以进行测试.现在我想从列表中永久删除它.那么,是否有可能以alpha模式删除已发布的应用程序?解决方法如果您的应用是Alpha版,则没有人下载它.您必须先取消发布您的应用,然后与Google联系.他们会为您删除您的应用.我让他们为我删除1个应用程序.

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部