Ajax的简单使用(2)
来源:互联网 发布:mac是什么意思啊 编辑:程序博客网 时间:2024/06/14 17:02
Ajax接受服务器返回的信息
浏览器可以接收的信息Ajax都可以接收,如字符串、html标签、css样式内容、xml内容、json内容等。
ajax对象成员
属性:
- responseText:以字符串形式接受服务器端返回的信息
- readyState:
- 0:刚创建ajax对象
- 1:已经调用open方法
- 2:已经调用send方法
- 3:已经返回部分数据
- 4:请求完成,数据返回完整
- onreadystatechange:事件(带on前缀),当ajax转态readyState发生变化时要触发执行;为了获得较多的转态,最好在创建ajax对象后就设置;最多可感知1/2/3/4四种状态
方法:
- open() :创建新的http请求
- send() :把请求发送给服务器端
接受服务器返回的信息例子:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Untitled Document</title><script type="text/javascript">/* ajax对象成员 属性: responseText:以字符串形式接受服务器端返回的信息 readyState: 0:刚创建ajax对象 1:已经调用open方法 2:已经调用send方法 3:已经返回部分数据 4:请求完成,数据返回完整 onreadystatechange:事件(带on前缀),当ajax转态readyState发生变化时要触发执行 为了获得较多的转态,最好在创建ajax对象后就设置 最多可感知1/2/3/4四种状态 方法: open() 创建新的http请求 send() 把请求发送给服务器端*/function f1(){ //ajax发起请求 并 接收返回的信息 //1.创建对象 var xhr = new XMLHttpRequest(); //4.给ajax设置事件 xhr.onreadystatechange = function(){ //console.log(xhr.readyState); if(xhr.readyState == 4){ //把服务器端返回的数据返回到页面上 document.getElementById('result').innerHTML = xhr.responseText; } } //2.创建新的http请求(并设置请求地址) //open(请求方式get/post,url请求地址) xhr.open('get', './03.php'); //3.发送请求 //send(get-null/post-给服务器传递的信息) xhr.send(null);}</script></head><body> <h2>ajax发起对服务器端的请求并接受返回的信息</h2> <input type="button" value="触发" onclick="f1()"/> <p id="result"></p></body></html>
服务器页面(03.php):
<?php echo "<div style='color:red;'>恭喜,该名字可以使用!</div>";?>
点击触发运行结果:
2 get和post方式的ajax请求
2.1两者的不同
2.1.1 给服务器传递数据量
get方式的大小是受限于浏览器,大部分浏览器是2k的限制,每中浏览器限制不一样,如chrome的是8k。
http://anvkk/index.php?name=tom
上述请求通过get方式传递了9个字节(?name=tom)的信息,1024字节=1k。
post原则上没有限制,php.ini对其限制为8M
2.1.2 安全方面,post传递数据较安全
2.1.3 传递数据的形式不一样
get方式在url地址后面以请求字符串形式传递参数
http://ans12/index.php?name=tome&age=23$addr=beijing
name=tome&age=23$addr=beijing这个部分就是请求字符串,就是一些“名-值”对,中间使用&符号连接。
post方式是把form表单的数据给请求出来以xml形式传递给服务器。
2.2 ajax之get方式请求
get方式请求需要注意的两个地方
1.在url地址后面以请求字符串(传递的get参数信息)形式传递数据。
2.对中文、=、&等特殊符号处理。
对特殊信息的处理:
在浏览器里通过get参数传递一些特殊符号信息会被浏览器误解混淆,例如 & = 等。
为了避免特殊符号被误解产生歧义,需要对其进行编码处理。
同时如果传递get参数中有中文信息,也需要编码处理(有的浏览器会自动处理)
1.在php中可以用urlencode()/urldecode()函数对特殊符号进行编码、解码处理。(urlencode()可以把中文转为浏览器可以识别的信息。编码后的信息为%号后接两个十六进制数)
2.在JavaScript中可以通过encodeURIComponent()对特殊符号等信息进行编码。
编码后的信息可以被正常接收使用,无需反编码。
在js中通过encodeURIComponent()进行编码
客户端页面(04-get.html)
<!--04-get.html--><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Untitled Document</title><script>function checkname(){ //ajax方式用户名校验 //1.获取用户名信息 var nm = document.getElementById('username').value; //对传递的特殊符号(例如:&,=)进行特殊处理 //同时对“中文”也进行自动的编码处理 nm = encodeURIComponent(nm); //2.ajax校验 var xhr = new XMLHttpRequest(); //ajax事件设置,以便接收返回的信息 xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ alert(xhr.responseText); } } xhr.open('get', './04.php?name='+nm+'&addr=beijing'); xhr.send(null);}</script></head><body><h2>Ajax用户名校验(get方式)</h2><p>用户名:</p><input type="text" id="username" onblur="checkname()"/><p>手机号码:</p><input type="text" id="usertel"/></body></html>
服务器端页面(04.php)
<?php//接收get方式传递过来的“用户名”信息,并做数据库校验print_r($_GET);echo "aaaa";
未作特殊字符处理时(注释这行nm = encodeURIComponent(nm);):
可以看出浏览器把用户名(Yeoman92&height=170)拆开成2个元素了。
作特殊字符处理后:
作特殊字符处理后,用户名(Yeoman92&height=170)是一个未拆开的整体。
火狐浏览器会对中文进行自动处理:
通过php中的urlencode()来编码:
//05.php<?php$subject = "php&detail=html";//对特殊字符进行编码$subject = urlencode($subject);echo "<a href='./04.php?sjt=$subject'>course</a>";
作编码后:
Array ( [sjt] => php&detail=html ) aaaa
具体可被编码的特殊符号:
汉字的每个字节单位转为%两个十六进制数
2.3 ajax之get方式请求
ajax之post请求需要注意的四个地方:
(1)给服务器传递数据需要调用send(请求字符串数据)方法
(2)调用setRequestHeader()方法把传递的数据组织为xml格式(模仿form表单传递数据)
(3)传递的中文信息无需编码,特殊符号像 &、= 等仍需要编码
(4)该方式请求的同时也可以传递get参数信息,同样使用$_GET接收该信息
post方式请求需要把信息组织为请求字符串传递给send()方法
post方式请求需要设置header头协议,以便把数据组织为xml形式
客户端页面(06-get.php)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Untitled Document</title><script>function checkname(){ //ajax方式用户名校验 //1.获取用户名信息 var nm = document.getElementById('username').value; //对传递的特殊符号(例如:&,=)进行特殊处理 nm = encodeURIComponent(nm); //把用户名信息变为“请求字符串” var info = "name="+nm+"&age=23"; //2.ajax校验 var xhr = new XMLHttpRequest(); //ajax事件设置,以便接收返回的信息 xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ alert(xhr.responseText); } } xhr.open('post', './06.php?addr=beijing');//后面是get形式 //post方式传递数据是模拟form表单传递数据 //form表单的post格式数据是通过xml形式传递给服务器的 //以下setRequestHeader()方法必须在open()方法后调用 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); xhr.send(info);}</script></head><body><h2>Ajax用户名校验(post方式)</h2><p>用户名:</p><input type="text" id="username" onblur="checkname()"/><p>手机号码:</p><input type="text" id="usertel"/></body></html>
服务器端页面(06.php)
<?php//接收post方式传递过来的“用户名”信息,并做数据库校验echo "post:";print_r($_POST);echo "get:";print_r($_GET);
在客户端页面,用户名栏输入要校验的信息,然后当框失去焦点后,变回触发checkname()函数,通过ajax与服务器端进行交互,把交互后的数据返回到客户端页面。
- Ajax的简单使用(2)
- Ajax的简单使用
- Ajax的简单使用
- ajax的简单使用
- Ajax的简单使用
- Ajax的简单使用(1)
- XMLHTTP的简单使用(Ajax)
- Ajax极为简单的使用
- js ajax的简单使用
- Jquery+ajax的简单使用
- Ajax&JSON的简单使用
- 简单的ajax+spring使用
- jquery ajax的简单使用
- ajax的简单使用——get&post的实现(2)
- Java Ajax技术的简单使用
- 菜鸟如何简单的使用ajax
- 菜鸟如何简单的使用ajax
- ajax对象使用的简单实例
- 使用真机做android开发
- TCP/IP详解学习笔记(1)-基本概念
- mybatis 进行插入操作,如何返回主键问题
- 笔记-CCNA与网络安全 第4章 配置cisco网络设备
- Android Context 上下文 你必须知道的一切
- Ajax的简单使用(2)
- Marklogic学习 由浅入深(8)—— Hello World!
- Linux程序设计--进程
- Activity的启动模式
- C语言:统计各种字符的个数
- linux chmod命令
- 第一章 网络应用程序
- 构造函数与this
- 一个简单的可以接收TCP客户端数据的TCP服务器