AJAX学习二
来源:互联网 发布:js给div加class 编辑:程序博客网 时间:2024/06/05 00:14
传统Ajax编程的步骤(不使用框架)
参考:传送门
由于传统web应用时每次总是全部页面加载的缺点(用传统的js可以部分的加载),使得2005年后ajax(异步传输技术)技术大行其道,在程序上除了减少与服务器交互的数据量,但对用户的体验方面是大大的舒服了.虽然在程序设计时,对与程序员的代码工作量增加了,但对于客户的使用方面却得到了很大的提升.下面说一下,用js而非什么其他的ajax框架的步骤与实现代码: 主要是1-5这五个步骤是重点.
0.写客户端的提交页面:一般用表单(按钮)或链接来写开始页面.
1. 创建XMLHttpRequest对象:这一步写起来虽然麻烦,但都是千篇一律,所以直接复制粘贴就是,里面代码中注意浏览器的兼容问题的考虑.
var XHR=null; var XHRcreate=function() { if (window.XMLHttpRequest) { //针对FireFox,Mozillar,Opera,Safari,IE7,IE8 XHR = new XMLHttpRequest(); //针对某些特定版本的mozillar浏览器的BUG进行修正 if (XHR.overrideMimeType) { XHR.overrideMimeType("text/xml"); } } else if (window.ActiveXObject) { //针对IE6,IE5.5,IE5 var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; for (var i = 0; i < activexName.length; i++) { try{ //如果创建失败,回抛出异常,然后可以继续循环,继续尝试创建 XHR = new ActiveXObject(activexName[i]); break; } catch(e){ } } } } XHRcreate();//
2.注册回调函数:
注意回调函数后面不要接()就是,否则返回的是callback()的返回值.
<pre name="code" class="html"> XHR.onreadystatechange = callback;
3.设置连接信息:这里分两种情况:一是get方式发送;二是以post方式发送,就要麻烦一些,要设置请求头
(1)get方式:
XHR.open("GET","login_verify.jsp?name="+ userName,true);
(2)post方式:
XHR.setRequestHeader("Content-type","application/x-www-form-urlencoded");
4.发送数据:
(1)get方式:
XHR.send(null);
(2)post方式:
XHR.send("name=" + userName);
5.接收响应数据:(在回调函数里面):
这是最复杂的地方,响应的方式有两种:一种是text方式,一种是xml方式,因为xml方式处理比较麻烦,而且实际中也比较少.这里就只说text方式:
function callback() { //判断对象的状态是交互完成 if (XHR.readyState == 4) { //判断http的交互是否成功 if (XHR.status == 200) { var responseText = XHR.responseText; //通过dom的方式找到div标签所对应的元素节点(为了简便,这里客户端的程序未写了) var divNode = document.getElementById("result"); divNode.innerHTML = responseText; } else { alert("出错了!!!"); } }
6.写服务器端的响应:
用jsp或servlet都可以,一般是用out.println("返回给客户的的内容");的语句来返回给客户内容.
0 0
- Ajax学习笔记(二)
- AJAX学习(二)
- Ajax控件学习(二)
- Ajax学习(二)
- ajax学习笔记二
- 学习AJAX(二)
- Ajax学习笔记(二)
- Ajax学习二
- AJAX学习笔记二
- Ajax学习(二)
- AJAX学习二
- AJAX学习(二)-------DOM基础
- AJAX学习笔记(二)
- jQuery学习笔记:Ajax(二)
- 快速学习AJAX之二
- ajax 学习总结(二)
- 学习ajax (二)(updatepanel 服务器端)
- AJAX学习捷径 (二)
- 剑指Offer 41题 和为s的两个数字VS 何为S的连续正数序列 Java版
- Leetcode 160. Intersection of Two Linked Lists/CC150 2.7
- 在mac上使用VS Code编写C#应用程序
- AJAX学习一
- Leetcode 285. Inorder Successor in BST
- AJAX学习二
- 数据类型与json数据格式
- BT5 upgrade to Kali
- F面经:判断数组是否单调以及Trie Tree不加wildcard 加句号
- AJAX学习三
- Android天气类app实现
- LeetCode32. Longest Valid Parentheses
- Wget 下载进度条是如何实现的?
- Caffe 实践 在数据集MNIST上使用LeNet