Ajax返回的數據格式有3種,text/xml/json
無刷新數據交換技術:
flash, java applet, 框架, iframe, ajax)
json數據 ——一種原生態的數據、
ajax原理:使用XMLHTTPREQUEST異步傳輸獲得數據,賦給佔位符、
u ajax在什麼地方用的多
1 動態加載數據,按需取得數據。【樹形菜單、聯動菜單.../省市聯動】
2 改善用戶體驗。【輸入內容前提示、帶進度條文件上傳...】
3 電子商務應用。 【購物車、郵件訂閱...】
4 訪問第三方服務。 【訪問搜索服務、rss閱讀器】
5. 數據的佈局刷新
<?php ?> 其中?>的有無表示被包含於包含的關係。☞ 使用get方式發出請求,如果提交的用戶名不變化,瀏覽器將不會真的發請求,而是緩存取數據., url
解決方法
1. url 後帶一個總是變化的參數,比如當前時間
var url="/ajax/registerProcess.php?mytime="+new Date()+"&username="+$("username").value;
2. 在服務器回送結果時,禁用緩存.
//這裏兩句話很重要,第一講話告訴瀏覽器返回的數據是xml格式
header("Content-Type: text/xml;charset=utf-8");
//告訴瀏覽器不要緩存數據
header("Cache-Control: no-cache");
1. 使用 ajax完成用戶名的驗證
register.php
<html>
<head>
<title>用戶註冊</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<script type="text/javascript">
//創建ajax引擎
function getXmlHttpObject(){
var xmlHttpRequest;
//不同的瀏覽器獲取對象xmlhttprequest 對象方法不一樣
if(window.ActiveXObject){
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}
var myXmlHttpRequest="";
//驗證用戶名是否存在
function checkName(){
myXmlHttpRequest=getXmlHttpObject();
//怎麼判斷創建ok
if(myXmlHttpRequest){
//通過myXmlHttpRequest對象發送請求到服務器的某個頁面
//第一個參數表示請求的方式, "get" / "post"
//第二個參數指定url,對哪個頁面發出ajax請求(本質仍然是http請求)
//第三個參數表示 true表示使用異步機制,如果false表示不使用異步
var url="/ajax/registerProcess.php?mytime="+new Date()+"&username="+$("username").value;
//打開請求.
myXmlHttpRequest.open("get",url,true);
//指定回調函數.chuli是函數名
myXmlHttpRequest.onreadystatechange=chuli;
//真的發送請求,如果是get請求則填入 null即可
//如果是post請求,則填入實際的數據
myXmlHttpRequest.send(null);
}
}
//回調函數
function chuli(){
//window.alert("處理函數被調回"+myXmlHttpRequest.readyState);
//我要取出從registerPro.php頁面返回的數據
if(myXmlHttpRequest.readyState==4){
//取出值,根據返回信息的格式定.text
//window.alert("服務器返回"+myXmlHttpRequest.responseText);
$('myres').value=myXmlHttpRequest.responseText;
}
}
//這裏我們寫一個函數
function $(id){
return document.getElementById(id);
}
</script>
</head>
<body>
<form action="???" method="post">
用戶名字:<input type="text" οnkeyup="checkName();" name="username1" id="username"><input type="button" οnclick="checkName();" value="驗證用戶名">
<input style="border-width: 0;color: red" type="text" id="myres">
<br/>
用戶密碼:<input type="password" name="password"><br>
電子郵件:<input type="text" name="email"><br/>
<input type="submit" value="用戶註冊">
</form>
<form action="???" method="post">
用戶名字:<input type="text" name="username2" >
<br/>
用戶密碼:<input type="password" name="password"><br>
電子郵件:<input type="text" name="email"><br/>
<input type="submit" value="用戶註冊">
</form>
</body>
</html>
registerpro.php
<?php
//這裏兩句話很重要,第一講話告訴瀏覽器返回的數據是xml格式
header("Content-Type: text/xml;charset=utf-8");
//告訴瀏覽器不要緩存數據
header("Cache-Control: no-cache");
//接收數據
$username=$_GET['username'];
if($username=="shunping"){
echo "用戶名不可以用";//注意,這裏數據是返回給請求的頁面.
}else{
echo "用戶名可以用";
}
?>
u ajax的post方式請求
在前面案例我們修改一下 :
關鍵代碼
register.php
var url="/ajax/registerProcess.php";
//這個是要發送的數據
var data="username="+$('username').value;
//打開請求.
myXmlHttpRequest.open("post",url,true);
//還有一句話,這句話必須.
myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//指定回調函數.chuli是函數名
myXmlHttpRequest.onreadystatechange=chuli;
//真的發送請求,如果是get請求則填入 null即可
//如果是post請求,則填入實際的數據
myXmlHttpRequest.send(data);
registerPro.php關鍵碼 :
$username=$_POST['username'];