Javascript & AJAX
2013-10-25 09:14
357 查看
//客户端提交: //1.0 ajax的创建(兼容浏览器): this.createObj = function () { try { // code for IE7+, Firefox, Chrome, Opera, Safari this.obj = new XMLHttpRequest(); } catch (e) { // code for IE6, IE5 this.obj = new ActiveXObject("Microsoft.XMLHTTP"); } return obj; } //1.1 ajax提交数据: this.toServer = function (xmlHttp,Surl, Cvalue) { xmlHttp.open("POST", Surl, true); xmlHttp.send(Cvalue); } //1.2 ajax接收服务器的返回数据: this.receiveFromServer = function (xmlHttp,targetId) { var span = document.getElementById(targetId); if (xmlHttp.readyState < 4) { // 正在交互 span.style.color = "blue"; span.innerHTML = "正在检测..."; } if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { // 请求成功 ...this.obj.responseText } //1.3 调用回调函数: function receiveFromServer(xmlHttp,targetId) { var span = document.getElementById(targetId); if (xmlHttp.readyState < 4) { // 正在交互 //document.write(xmlHttp.readyState+":"+xmlHttp.status); span.style.color = "blue"; span.innerHTML = "正在检测..."; } if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { if (parseInt(xmlHttp.responseText)) { //,return 1 -->success span.style.color = "red"; span.innerHTML = "SORRY, 用户名已经存在!"; return; } else { span.style.color = "green"; span.innerHTML = "OK, 用户名可以使用!"; return; } span.innerHTML = "暂时无法进行检测..."; } //1.4 ajax整合: this.allFunction = function (targetId, Surl, Cvalue) { xmlHttp=this.createObj(); xmlHttp.onreadystatechange = function(){receiveFromServer(xmlHttp,targetId)}; this.toServer(xmlHttp,Surl, Cvalue); }
需要注意的一些问题:
给onreadystatechange传递参数的方式:
假设xmlhttp.onreadystatechange=isok(),但有时候这个函数往往要带有参数,
如果这样写:xmlhttp.onreadystatechange=isok(a,b),调试的时候就会报错。下面提供两种方法:
1. xmlhttp.onreadystatechange= function(){xx(a,b)};//在javascript中有些函数规定了参数个数,所以这种匿名调用非常常见
2. xmlhttp.onreadystatechange= new Function("xx(a,b)"); //xx(a,b)是带有参数的函数。
Ajax发送数据编码:
1. 由于Ajax在发送的时候都是采用的UTF-8编码,所以,如果你的页面时GB2312的,在发送中文Ajax参数的时候需要用encodeURI编码参数,
并且需要编码2次,如:
1.1. geturl=encodeURI(encodeURI(name));
1.2. geturl=encodeURI(name);geturl=encodeURI(geturl);
2. 在接收页面,PHP中,先使用urldecode解码,然后使用iconv("UTF-8","GB2312",$str)进行编码转换,如:
$name=urldecode($_POST['name']);
$name =iconv("UTF-8","GB2312",$name);
这时数据再写到数据库中就是中文的了。
服务器端返回:
1. 在服务器端以Map的集合形式处理客户端提交的数据
2. 服务器端获取数据通过$_POST 和 $_GET 方式,对于通过url提交的方式数据,也就是地址栏中附加的数据,都是通过$_GET方式获取。 其中,通过Get方式提交,因为Url中字符限制为255,所以存在数据量限制。(一般Get:2k,Post:8M)
相关文章推荐
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- ASP.NET AJAX客户端编程教程(3)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- 'AjaxPro'未定义错误的原因&javascript顺序执行&AjaxPro机制
- 002_JavaScript对象定义方式剖析——北京圣思园JavaScript&jsUnit&Ajax&jQuery
- 003_JavaScript深度剖析之对象定义详解——北京圣思园JavaScript&jsUnit&Ajax&jQuery
- ajax & javascript 链接
- java面试题之三:html&JavaScript&ajax 部分
- html&JavaScript&ajax 部分
- 【JavaScript】Ajax 中如何上传文…
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- 在JavaWEB中将Ajax动态查询结果转换成List<Map>型JavaScript数组
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展
- <<High Performance JavaScript>>读书笔记-7.Ajax
- ASP.NET AJAX Advance Tips & Tricks (3) JavaScript与Tab的交互
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->add 函数
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- 从零开始学_JavaScript_系列(八)——js系列<2>(事件触发顺序、文本读取、js编写ajax、输入验证、下拉菜单)
- [AJAX]40+ Tooltips Scripts With AJAX, JavaScript & CSS
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间->JavaScript 基础类型扩展->Array 类型扩展->addRange 函数
- Java面试宝典2010(三. html&JavaScript&ajax部分)