ajax 异步 javaScript and xml

开发五步骤:

1. 创建对象 XMLHttpRequest(chrome,firefox) ie... jquery

2. 找到连接, http的method方法    GET|POST    PUT DELETE

3. 注册监听器  有数据返回之后,就会自动调用该方法(不是一次 3次)

4. 发送请求 POST PUT delete 请求数据

5. 处理请求

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
* {
margin: 0;
padding: 0
}
</style>
</head>
<body>
<input onkeyup="tips(this)">
<div id="tip"></div>
<script>
function tips(th) {
//创建对象
var req = new XMLHttpRequest();
//打开链接
req.open("GET", "tips.jsp?k=" + th.value);
//注册监听器
req.onreadystatechange = function() {
//0.1.2.3.4 5中状态 我们只需要4(请求完成 )来接收返回来的数据即可 其他情况选择忽略
if (req.readyState == 4) {
//当页面状态200代表请求成功
if (req.status == 200) {
//将传回来的值因为包括页面中的空格,所以利用分割字符串
var arr = req.responseText.split(",");
//循环拼接字符串成ul输出
var str = "<ul>";//头
for (var i = 0; i < arr.length; i++) {
str += "<li>" + arr[i] + "</li>";//中间的li
}
str += "<ul>";//尾
//获取页面tip盒子输出值
document.getElementById("tip").innerHTML = str; }
}
}
//发送请求
req.send();
}
</script>
</body>
</html>

当我们提交类型为POST时,要注意:

1.open打开连接的方式要为(第一个参数)post并且(第二个参数)url为链接地址:

 req.open("POST","tips.jsp");

2.设置请求头:

    req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

3.发送请求的时候写上传输的值:

 req.send("k="+th.value);

源码:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
* {
margin: 0;
padding: 0
}
</style>
</head>
<body>
<input onkeyup="tips(this)">
<div id="tip"></div>
<script>
function tips(th) {
//创建对象
var req=new XMLHttpRequest();
//打开链接
//req.open("GET","tips.jsp?k="+th.value);
req.open("POST","tips.jsp");
//设置请求头
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//注册监听器
req.onreadystatechange=function(){
if(req.readyState==4){
if(req.status==200){
//将传回来的值因为包括页面中的空格,所以利用分割字符串
var arr = req.responseText.split(",");
//循环拼接字符串成ul输出
var str = "<ul>";//头
for (var i = 0; i < arr.length; i++) {
str += "<li>" + arr[i] + "</li>";//中间的li
}
str += "<ul>";//尾
//获取页面tip盒子输出值
document.getElementById("tip").innerHTML = str; }
}
}
req.send("k="+th.value);
} </script>
</body>
</html>

ajax+jquery:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js"></script>
<script>
$(function(){
$("input").keyup(function(){
//console.log($(this).val());
//$.get("tips.jsp?k="+$(this).val(),function(data){
$.post("tips.jsp","k="+$(this).val(),function(data){
var arr = data.split(",");
var str = "<ul>";
for(var i=0;i<arr.length;i++){
str+="<li>"+arr[i]+"</li>";
}
str+="</ul>";
$("#tips").html(str);
});
})
})
</script>
<style>
*{margin:0;padding:0}
ul li{ list-style:none;
}
</style>
</head>
<body>
<input>
<div id="tips"></div>
</body>
</html>

js(三) ajax异步局部刷新技术底层代码实现的更多相关文章

  1. Ajax 异步局部刷新

    Ajax 异步局部刷新 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页 ...

  2. jquery ajax thinkphp异步局部刷新完整流程

    环境:ThinkPHP3.2.3,jQuery3.2   前言: 在一般的网站中,都需要用到jquery或者其他框架(比如angular)来处理前后端数据交互,thinkphp在后台也内置了一些函数用 ...

  3. asp.net mvc3 利用Ajax实现局部刷新

    1.利用Ajax.ActionLink()方法 首先在_Layout.cshtml文件中加载 运行AJAX必要的Jquery <script src="@Url.Content(&qu ...

  4. jQuery+ajax实现局部刷新

    在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load(),其他高级方法的使用以后再做详细笔记. 第一种: 当某几个页面 ...

  5. js中ajax异步问题

    1.JS的执行顺序问题 浏览器是按照从上到下的顺序解析页面,因此正常情况下,JavaScript脚本的执行顺序也是从上到下的,即页面上先出现的代码或先被引入的代码总是被先执行,即使是允许并行下载Jav ...

  6. Ajax定时局部刷新

    1.局部刷新一个地方 function refreshOnTime(){ $.ajax({ //配置 }); //7秒后重复执行该函数 setInterval('refreshOnTime', 700 ...

  7. C# 利用ajax实现局部刷新

    C#所有runat="server"的控件都会造成整个界面的刷新,如果想实现局部刷新,可以利用ajax. 需要加入的控件有ScriptManager和UpdatePanel,可以实 ...

  8. [转载].NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新

    之前开发的一套系统中用到了大量的 checkboxList 控件,但是每次选定之后都会刷新整个页面,用户体验很差,百度了之后查到这篇文章,尝试了一下可以实现,所以转载了过来,记录一下,也给其他有相同困 ...

  9. Ionic Js三:下拉刷新

    在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: HTML 代码 <body ng-app="starter" ng-controller="actions ...

随机推荐

  1. Serializable 可串行化接口

    Serializable 可串行化接口 定义一个User类,实现Serializable接口: package com.monkey1025; import java.io.Serializable; ...

  2. day38 17-Spring的Bean的属性注入:注解方式

    这个类已经可以由Spring控制反转了,那么属性呢?属性分为普通属性和对象属性两部分. JSR是一个组织,和W3C一样是定义一些标准的.它里面也定义了一歌注解,Spring对这个注解也是支持的.其实这 ...

  3. python Match函数

  4. buffer的相关小知识

    php与mysql的连接有三种方式,mysql,mysqli,pdo.不管使用哪种方式进行连接,都有使用buffer和不使用buffer的区别. 什么叫使用buffer和不使用buffer呢? 客户端 ...

  5. Hibernate 数据库方言配置;no dialect mapping for jdbc type:-9;生僻字

    最近因为生僻字在界面上显示为?: 主要原因是该字段在数据库中就是varchar类型,显示的就是?:如䶮(yan):现把varchar类型改为nvarchar类型:数据中能够正常显示: 但是Spring ...

  6. 两种最常用的 HTTP 方法:GET 和 POST。

    什么是 HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客户机与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用程 ...

  7. xib搭建scrollView无法滑动的问题

    最近给xib中的scrollView添加contentView的时候,view的约束总是参照莫名其妙的东西,不是frameLayout就是safeArea 因为之前都是默认以superView为参照系 ...

  8. ps学习教程

    1.通道抠图:http://www.16xx8.com/photoshop/tongdaokoutu/

  9. sql —— group by

    说明: 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 原表: 执行分组查询: select G ...

  10. OpenKruise - 云原生应用自动化引擎正式开源

    2019 年 6 月 24 日至 26 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCo ...