Ajax缓存问题的解决:Ajax的本质就是将状态保存在客户端,因此资源的缓存和再利用是他的优势所在,但有时候不希望被缓存,例如计数器,不同请求的计数器得到的结果应该是最新的。在线时长也应该每次刷新不一样。
1)设置随机数: Math.random();
url: "user.PHP?username="+username+"&num="+Math.random();
2)设置时间戳
var dateTime = new Date().getTime()
url: "user.PHP?username="+username+"&num="+dateTime;
3)使用POST代替GET方式提交数据: POST本身提交和返回的数据的不缓存;
4)设置响应头信息
header("Cache-Control:no-cache");
POST方式数据传递:
1、在send前 设置post发送的数据按照URL地址方式传递
ajax.setRequestHeader("content-Type","application/x-www-form-urlencoded");
2、open函数中第二个参数只剩下提交地址
3、将传递的数据: 参数名=值&参数名=值&...的方式放入到send函数()中
ajax.open("POST","./user.PHP",false);
//发送
ajax.setRequestHeader("content-TYPE","application/x-www-form-urlencoded");
var data = "uname="+uname;
ajax.send(data);
reg.html
<!DOCTYPEHTML> <html> <head> <title>ajax</title> <Metacharset="utf-8"/> <scripttype="text/javascript"> varhttpAjax=newXMLHttpRequest(); functioncheckUser(uname){ if(uname==""){ returnfalse; } httpAjax.onreadystatechange=function(){ if(httpAjax.readyState==4&&httpAjax.status==200){ varres=httpAjax.responseText; varsp=document.getElementById("sp"); if(res=="true"){ sp.innerHTML="<fontcolor='red'>已注册</font>"; }else{ sp.innerHTML="<fontcolor='green'>可以注册</font>" } } } httpAjax.open("post","user.PHP",true); httpAjax.setRequestHeader("content-TYPE","application/x-www-form-urlencoded"); vardata="uname="+uname;//user.PHP?uname="1"&pwd="123","uname="是参数,+是参数连接变量的用的,uname是js中的一个不带$的变量,也就是值 httpAjax.send(data); } </script> </head> <body> <inputtype="text"id="username"class="username"name="username"onchange="checkUser(this.value)"/><spanid="sp"></span> </body> </html>
user.PHP
<?PHP header("content-type:text/html;charset=utf-8"); $pdo=newPDO("MysqL:host=localhost;dbname=tk106","root",""); $pdo->exec("setnamesutf8"); $uname=$_REQUEST["uname"];//post传值,这里要改为REQUEST接收 $sql="select*fromstu_infowheresname='".$uname."'"; $data=$pdo->query($sql)->fetch(PDO::FETCH_ASSOC); if($data){ echo"true"; }else{ echo"false"; } ?>原文链接:https://www.f2er.com/ajax/162704.html