1.GET方式
下面这个是一个简单的ajax请求当失去焦点时候发送表单到服务器,然后服务器把发送的get信息输出。
网页代码:
<!DOCTYPE html> <html> <head> <title>get提交</title> <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0"> <script> function action(){ var name = document.getElementById('uname').value; // name=encodeURIComponent(name); //进行特殊字符编码 var xhr =new XMLHttpRequest();//创建ajax对象 xhr.onreadystatechange=function(){//对状态进行监听 if(xhr.readyState===4) { alert(xhr.responseText);//输出服务器返回的信息 } }; xhr.open("get","./action.PHP?uname="+name);//通过get方式发送信息 xhr.send(); } </script> </head> <body> <p>用户名:<input type="text" id="uname" onblur="action()"/></p> </body> </html>
服务器代码:
<?PHP /** * @功能 处理submit的表单 */ print_r($_GET);
这样普通情况没有问题但是当表单内容出现特殊字符的时候就会出现偏差,比如输入的用户名信息为:tom&height=179
浏览器返回结果是:
这样就会出现问题链接就会变成"./index.PHP?name=tom&height=179",传递到服务器get信息就变成两个变量了,这个是错误的结果。因此我们需要给表单内容编码。
name=encodeURIComponent(name);//对链接进行编码
链接编码的结果变成了/action.PHP?uname=tom%26height%3D170
----------------------------------------------------------------------------------------------------------------------------------------------
2.POST发送请求
发送HTML代码为:
<!DOCTYPE html> <html> <head> <title>post提交</title> <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0"> <script> function action(){ var name = document.getElementById('uname').value; name=encodeURIComponent(name); var tel=document.getElementById('utel').value; var xhr =new XMLHttpRequest();//创建ajax对象 xhr.onreadystatechange=function(){//对状态进行监听 if(xhr.readyState===4) { alert(xhr.responseText);//输出服务器返回的信息 } }; xhr.open("post","./action.PHP");//通过get方式发送信息 xhr.setRequestHeader('Content-type',"application/x-www-form-urlencoded");//发送类型xform var info = "uname="+name+"&utel="+tel; xhr.send(info); } </script> </head> <body> <!-- 当电话文本框失去焦点是发送ajax的post请求--> <p>用户名:<input type="text" id="uname" /></p> <p>电话 :<input type="text" id="utel" onblur="action()"/></p> </body> </html>
服务器代码为:
<?PHP /** * @功能 处理submit的表单 */ print_r($_POST);
使用firebug查看发送情况
接收情况: