js(三) ajax异步局部刷新技术底层代码实现
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异步局部刷新技术底层代码实现的更多相关文章
- Ajax 异步局部刷新
Ajax 异步局部刷新 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页 ...
- jquery ajax thinkphp异步局部刷新完整流程
环境:ThinkPHP3.2.3,jQuery3.2 前言: 在一般的网站中,都需要用到jquery或者其他框架(比如angular)来处理前后端数据交互,thinkphp在后台也内置了一些函数用 ...
- asp.net mvc3 利用Ajax实现局部刷新
1.利用Ajax.ActionLink()方法 首先在_Layout.cshtml文件中加载 运行AJAX必要的Jquery <script src="@Url.Content(&qu ...
- jQuery+ajax实现局部刷新
在项目中,经常会用到ajax,比如实现局部刷新,比如需要前后端交互等,这里呢分享局部刷新的两种方法,主要用的是ajax里面的.load(),其他高级方法的使用以后再做详细笔记. 第一种: 当某几个页面 ...
- js中ajax异步问题
1.JS的执行顺序问题 浏览器是按照从上到下的顺序解析页面,因此正常情况下,JavaScript脚本的执行顺序也是从上到下的,即页面上先出现的代码或先被引入的代码总是被先执行,即使是允许并行下载Jav ...
- Ajax定时局部刷新
1.局部刷新一个地方 function refreshOnTime(){ $.ajax({ //配置 }); //7秒后重复执行该函数 setInterval('refreshOnTime', 700 ...
- C# 利用ajax实现局部刷新
C#所有runat="server"的控件都会造成整个界面的刷新,如果想实现局部刷新,可以利用ajax. 需要加入的控件有ScriptManager和UpdatePanel,可以实 ...
- [转载].NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新
之前开发的一套系统中用到了大量的 checkboxList 控件,但是每次选定之后都会刷新整个页面,用户体验很差,百度了之后查到这篇文章,尝试了一下可以实现,所以转载了过来,记录一下,也给其他有相同困 ...
- Ionic Js三:下拉刷新
在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: HTML 代码 <body ng-app="starter" ng-controller="actions ...
随机推荐
- React高阶组件 和 Render Props
高阶组件 本质 本质是函数,将组件作为接收参数,返回一个新的组件.HOC本身不是React API,是一种基于React组合的特而形成的设计模式. 解决的问题(作用) 一句话概括:功能的复用,减少代码 ...
- MySQL.之 一行内容转换多行
MySQL.之 一行内容转换多行 描述: 将一行记录中的某一列值(值格式:数据之间用英文逗号隔开),将这一数据转换成多行. 例如:表 cds_var 中的 cds_value 中的数据格式:多个id之 ...
- php手册常用的函数
<?php ************************************************************/ header("Content-type:tex ...
- B站直播 DEMO ijkplayerDemo
http://blog.csdn.net/kengsir/article/details/51750879 一. 下载ijkplayer ijkplayer下载地址 下载完成后解压, 解压后文件夹内部 ...
- 如何合并两个git commit
把你的修改stage之后运行: git rebase -i HEAD~2 然后把第二行的pick改成squash就ok啦 note: 同理,如果要合并多个commit,把后面的2改成你想要合并的com ...
- ie8 下margin-top失效的小案例
一个小案例,是关于IE8下的margin-top的失效问题,巨日代码如下: 正常的chrome浏览器下的显示如下: margin-top=10px,正常显示 但是在ie8下,最终样式如下: margi ...
- 【JZOJ4810】【NOIP2016提高A组五校联考1】道路规划
题目描述 输入 输出 样例输入 5 1 4 5 2 3 3 4 2 1 5 样例输出 3 数据范围 样例解释 解法 模型显然. 设第一列为a[],第二列为b[],f[i]为前i个数的最大答案. 顺序枚 ...
- 【JZOJ4787】【NOIP2016提高A组模拟9.17】数格子
题目描述 输入 输出 样例输入 1 10000 3 10000 5 10000 0 0 样例输出 1 11 95 数据范围 每个测试点数据组数不超过10组 解法 状态压缩动态规划. 设f[i][j]表 ...
- python 利用pandas导入数据
- 只想着一直调用一直爽, 那API凭证泄漏风险如何破?
如今各家云厂商都通过给用户提供API调用的方式来实现一些自动化编排方面的需求.为了解决调用API过程中的通信加密和身份认证问题,大多数云厂商会使用同一套技术方案—基于非对称密钥算法的鉴权密钥对,这里的 ...