php ajax 请求原理

<html>
<body>

<script type="text/javascript">
var xmlHttpRequest;
function getXmlHttpObject(){
//不同的浏览器获取xmlhttprequest对象的方法不一样
if(window.ActiveXObject){
//说明是ie浏览器
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");

}else{
//说明不是ie
xmlHttpRequestp=new XMLHttpRequest();

}
return xmlHttpRequest;
}
var myXmlHttpRequest="";
//验证用户名是否存在
function checkName(){
myXmlHttpRequest=getXmlHttpObject();//这个就是ajax引擎对象
//怎么判断创建是否ok
if(myXmlHttpRequest){
//说明创建成功 这说明1号线完成了 现在接下来完成2号线 发送给服务器
//通过myXmlHttpRequest发送给服务器 然后交给某个页面
//这个url是你要对那个页面发送ajax请求 这里要发送给某个控制器
//true是表示使用异步机制 false表示不使用异步机制 ajax是用异步来处理的 一般是用true
// var url="/ajax/testProcess.php?mytime="+new Date()+"&username="+$("username").value;
var url="/ajax/testProcess.php";
//这是打开请求
// myXmlHttpRequest.open("get",url,true);
//发送的数据
var data="username="+$("username").value;
//用post发送请求 打开请求
myXmlHttpRequest.open("post",url,true);
//用post发送还必须要这一句话
myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//指定回调函数 4号线要使用回调函数 调用回调函数 onreadystatechange状态改变触发器 有4中状态 要到第4个状态说明成功了
myXmlHttpRequest.onreadystatechange=chuli;
//真的发送请求 如果是get请求可以填null 如果是post请求 要填实际的数据
// myXmlHttpRequest.send(null);
myXmlHttpRequest.send(data);
//2号创建好 了 现在要创建3号线
//这里特别注意一下 如果你是用get发送的请求 如果你写的用户名没有改变 浏览器不会发送请求 会从缓存里面取 怎么样解决这个问题 这里有二种方法:1.url后面带一个总是变化的数 比如当前时间 2.在服务器回送这个结果时,禁锢缓存 //这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
//header("Content-Type: text/xml;charset=utf-8");
//告诉浏览器不要缓存数据
//header("Cache-Control: no-cache");

}

}
//回调函数
function chuli(){
//我要取出从testProcess.php返回的数据
if(myXmlHttpRequest.readyState==4){
if(myXmlHttpRequest.status==200){
//取出数据 ,这要根据返回的文本取出 有三种格式 html xml json
//window.alert("服务器返回的是:".myXmlHttpRequest.responseText);
var mes=myXmlHttpRequest.responseText;
//把字符串转成对象
var new_obj=eval("("+mes+")");
}


}
}
function $(id){
return document.getElementById(id);
}

</script>

<form name="getXmlHttpObject">
用户: <input type="text" name="username" id="username"/><input type="button" value="检查用户" οnclick="checkName()" />
时间: <input type="text" name="time" />
</form></body>
</html>


//这个是在服务器中的控制器
<?php
//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式
header("Content-Type: text/html;charset=utf-8");
//告诉浏览器不要缓存数据
header("Cache-Control: no-cache");

//接收数据
$username=$_POST['username'];
echo $username;//这是3号线
$info="";
if($username==shunping){
$info='{"mes":"用户名不可以用"}';
}else{
$info='{"mes":"用户名可以用"}';
}
echo $info;
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值